You can set a constant mirror string to return directly to the comparison
#include <iostream>#include<string>#include<cstring>#include<cstdlib>#include<cstdio>#include<cmath>#include<algorithm>#include<stack>#include<cctype>using namespacestd;#defineMem (A, B) memset (A,b,sizeof (a))#definePF printf#defineSF scanf#defineSPF sprintf#defineDebug printf ("!\n")#defineINF 10000#defineMAXN 5010#defineMAX (A, b) a>b?a:b#defineBlank pf ("\ n")#defineLL Long LongConst 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."};CharSTR[MAXN];CharChangeCharch) { if(Isalpha (CH))returnrev[ch-'A']; returnrev[ch-'0'+ -];}intMain () { while(~SF ("%s", str)) { intp=1, m=1, I; intLen =strlen (str); for(i=0;i< (len+1)/2; i++) { if(str[i]!=str[len-i-1]) p=0; if(Change (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]); }}/*Notapalindromeisapalinilapasi2a3measatoyota*/
UVA401 (Palindrome string and mirror string)