UVa 401

来源:互联网 发布:北方数据 编辑:程序博客网 时间:2024/05/16 15:40

原题略,大意为判断输入字串是否为回文或镜像回文。

自己的代码十分拖沓,见入门经典上的代码不禁先膜为敬,并录于此。

注意:

中间字符(特指奇数时)要考虑到,所以为(len +1)/2,注意+1。

#include <iostream>#include <cstring>#include <cstdio>#include <cctype>using namespace std;const char* rev = "A   3  HIL JM O   2TUVWXY51SE Z  8 ";const char* msg[]={"is not a palindrome.","is a regular palindrome.","is a mirrored string.","is a mirrored palindrome."};char str[MAXN];char r(char ch){     if(isalpha(ch)) return rev[ch-'A'];     return rev[ch-'0'+25];}int main(){     while(~sf("%s",str))     {          int p=1,m=1,i;          int len = strlen(str);          for(i=0;i<(len+1)/2;i++)          {               if(str[i]!=str[len-i-1]) p=0;               if(r(str[i])!=str[len-i-1]) m=0;          }          pf("p:%d m:%d\n",p,m);          pf("%s -- is %s\n",str,msg[p+m*2]);     }}


0 0
原创粉丝点击