简单字符串题目
#include <stdio.h>
#include <map>
#include <algorithm>
#include <string.h>
using namespace std;
map<char,char> pal_map;
char buffer[30];
void func(void)
{
int i, len;
bool is_mirror, is_pal;
map<char,char>::iterator it;
is_pal = true;
is_mirror = true;
len = strlen(buffer+1);
for(i=1; i<=len/2; i++)
{
if(buffer[i] != buffer[len+1-i])
{
is_pal = false;
break;
}
}
for(i=1; i<=len/2; i++)
{
it = pal_map.find(buffer[i]);
if(it == pal_map.end())
{
is_mirror = false;
break;
}
else
{
if(buffer[len+1-i] != it->second)
{
is_mirror = false;
break;
}
}
}
if(len%2)
{
it = pal_map.find(buffer[len/2+1]);
if(it == pal_map.end())
is_mirror = false;
}
printf("%s", buffer+1);
if(is_pal && is_mirror)
{
printf(" -- is a mirrored palindrome.\n\n");
return;
}
if(is_pal && !is_mirror)
{
printf(" -- is a regular palindrome.\n\n");
return;
}
if(!is_pal && is_mirror)
{
printf(" -- is a mirrored string.\n\n");
return;
}
if(!is_pal && !is_mirror)
{
printf(" -- is not a palindrome.\n\n");
return;
}
}
void init()
{
pal_map.clear();
pal_map['A'] = 'A'; pal_map['U'] = 'U';
pal_map['E'] = '3'; pal_map['V'] = 'V';
pal_map['H'] = 'H'; pal_map['W'] = 'W';
pal_map['I'] = 'I'; pal_map['A'] = 'A';
pal_map['J'] = 'L';
pal_map['L'] = 'J';
pal_map['Y'] = 'Y';
pal_map['Z'] = '5';
pal_map['1'] = '1';
pal_map['2'] = 'S';
pal_map['3'] = 'E';
pal_map['5'] = 'Z';
pal_map['8'] = '8';
pal_map['M'] = 'M';
pal_map['O'] = 'O';
pal_map['S'] = '2';
pal_map['T'] = 'T';
}
int main(void)
{
init();
while(scanf("%s",buffer+1) != EOF)
{
func();
}
return 0;
}