题意:给出一个串 判断是不是回文串和镜像串 镜像即按题中所述A->A S->2 这样
按题中所说的暴力判断即可 镜像判断的时候用个map映射即可
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cctype>
#include<cmath>
#include<vector>
#include<queue>
#include<map>
#include<algorithm>
#include<set>
#define scnaf scanf
#define cahr char
#define bug puts("bugbugbug");
using namespace std;
typedef long long ll;
const int mod=1000000007;
const int maxn=1e5+5;
const int inf=1e9;
map<char,char> mp;
void initmp()
{
mp['A']='A';
mp['E']='3';
mp['H']='H';
mp['I']='I';
mp['J']='L';
mp['L']='J';
mp['M']='M';
mp['O']='O';
mp['S']='2';
mp['T']='T';
mp['U']='U';
mp['V']='V';
mp['W']='W';
mp['X']='X';
mp['Y']='Y';
mp['Z']='5';
mp['1']='1';
mp['2']='S';
mp['3']='E';
mp['5']='Z';
mp['8']='8';
}
char a[1005];
int main()
{
initmp();
while(~scanf("%s",a))
{
int flag1=1,flag2=1,la=strlen(a);
for(int i=0;i<la;i++)
{
if(a[i]!=a[la-i-1]) flag1=0;
if(mp[a[i]]!=a[la-i-1])flag2=0;
}
printf("%s -- ",a);
if(flag1)
{
if(flag2) puts("is a mirrored palindrome.");
else puts("is a regular palindrome.");
}
else
{
if(flag2) puts("is a mirrored string.");
else puts("is not a palindrome.");
}
puts("");
}
}