题目略。运用了常量数组,代码十分简洁,故记录。
#include<iostream>
#include<cctype>
#include<cstring>
using namespace std;
const char *rev="A 3 HIL JM O 2TUVWXY51SE Z 8 ";
const char *print[]={" not a palindrome."," a regular palindrome."," a mirrored string."," a mirrored palindrome."};
char r(char a)
{
return isalpha(a)?rev[a-'A']:rev[a-'0'+25];
}
int main()
{
char s[30];
while(cin>>s)
{
int t=1,p=1,l=strlen(s);
for(int i=0;i<(l+1)/2;i++)//此处必为(l+1)/2,否则若l/2则l=1时直接跳过了判断
{
if(s[i]!=s[l-i-1])
t=0;
if(r(s[i])!=s[l-i-1])
p=0;
}
cout<<s<<" -- is"<<print[t+2*p]<<endl<<endl;
}
return 0;
}