没什么难度,但是网上的代码都比较冗长,我模仿刘汝佳写的,这才叫编程之美啊。
ps:输出间空一行,别忘了
#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cstring>
#include<sstream>
#include<stack>
#include<queue>
#include<fstream>
#include<algorithm>
#include<map>
#include<set>
#include<vector>
#include<functional>
#include<cmath>
using namespace std;
char s1[]="A 3 HIL JM O 2TUVWXY51SE Z 8 ";
char m[100];
char check(char k)//整段代码的核心函数
{
if(isalpha(k))//判断是不是英文字符的函数
return s1[k-'A'];
else
return s1[k-'0'+25];
}
int main()
{
while(cin>>m)
{
int flaghui=1;
int flagjin=1;
int len=strlen(m);
for(int i=0;i<(len+1)/2;i++)//第一次写的len/2,然后判断中间字符,看了大神代码果断改了
{
if(m[i]!=m[len-i-1])
{
flaghui=0;
}
if(check(m[i])!=m[len-i-1])
{
flagjin=0;
}
}
if(flaghui==0&&flagjin==0)
{
cout<<m<<" -- is not a palindrome."<<endl;
}
else
if(flaghui==1&&flagjin==0)
cout<<m<<" -- is a regular palindrome."<<endl;
else
if(flaghui==0&&flagjin==1)
cout<<m<<" -- is a mirrored string."<<endl;
else
if(flaghui==1&&flagjin==1)
cout<<m<<" -- is a mirrored palindrome."<<endl;
cout<<endl;
}
return 0;
}