#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 ;
}
ZOJ 1325 Palindromes
最新推荐文章于 2020-01-27 10:07:07 发布