#include <cstdio>#include <cstring>#include <cstdlib>#include <vector>#include <cmath>#include <iostream>#include <algorithm>#include <functional>#include <string>#include <map>using namespace std;char ss[]="E3JLS2Z5AHIMOTUVWXY18";int slen;bool ishave(char c){ for(int i=0; i<slen; i++) { if(c==ss[i]) return true; } return false;}char get(char c){ switch(c) { case 'E': return '3'; case 'J': return 'L'; case 'S': return '2'; case 'Z': return '5'; case '3': return 'E'; case 'L': return 'J'; case '2': return 'S'; case '5': return 'Z'; default : break; } return c;}int main(){ char str[1000]; slen=strlen(ss); while(scanf("%s",str)!=EOF) { int len = strlen(str); int i=0,j=len-1; bool ispalindrome=true; bool ismirrored =true; while(i<j)//ispalindrome { if(str[i]!=str[j]) { ispalindrome=false; break; } i++; j--; } char tmp[1000]; strcpy(tmp,str); for(int i=0;i<len;i++) { if(ishave(tmp[i])) tmp[i]=get(tmp[i]); else { ismirrored=false; break; } } if(ismirrored) { for(int i=0,j=len-1;i<len;i++,j--) { if(str[i]!=tmp[j]) { ismirrored=false; break; } } } if(ispalindrome) { if(ismirrored)// true true { printf("%s -- is a mirrored palindrome.n",str); } else//true false { printf("%s -- is a regular palindrome.n",str); } } else { if(ismirrored) { printf("%s -- is a mirrored string.n",str); } else { printf("%s -- is not a palindrome.n",str); } } printf("n"); } return 0 ;}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)