HDOJ - 1318 Palindromes

来源:互联网 发布:天谕头发颜色数据 编辑:程序博客网 时间:2024/06/02 18:42

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1318


一般的字符串处理问题,一个共性:思路简单,代码繁琐。

譬如此题,首先会有一个问题要考虑:如何去建立镜像字母表。这里我采用的是两个常量字符串作为一一对应。

至于回文判断应该就不用说了吧。


代码如下:

#include <cstdio>#include <cstring>const char ch1[]="AEHIJLMOSTUVWXYZ123580";const char ch2[]="A3HILJMO2TUVWXY51SEZ80";char s[22];int mir[130];int pal(char *s){int n=strlen(s)-1;for (int i(0);i<=n/2;i++)if (s[i]!=s[n-i]) return 0;return 1;}int mirr(char* s){int n=strlen(s)-1;for (int i(0);i<=n/2;i++)if (mir[s[i]]<0 || mir[s[i]]!=s[n-i]) return 0;return 1;  }int main(){freopen("in.txt","r",stdin);for (int i('A');i<='Z';i++) mir[i]=-1;for (int i(0);i<22;i++) mir[ch1[i]]=ch2[i];while (scanf("%s",s)!=EOF){int a=pal(s),b=mirr(s);if (!(a+b)) printf("%s -- is not a palindrome.\n",s);else {if (a>b) printf("%s -- is a regular palindrome.\n",s);else {if (a<b) printf("%s -- is a mirrored string.\n",s);else {printf("%s -- is a mirrored palindrome.\n",s);}}}printf("\n");}return 0;}

Accepted0MS220K876 B


原创粉丝点击