int IsMirrored(char Str[]){
char temp[21];
int i,j,index;
int len = strlen(Str);
for(i = 0,j = len-1;i < len;i++,j--){
if(Str[i] >= 'A' && Str[i] <= 'Z'){
index = Str[i] - 'A';
temp[i] = MirroredStr[index];
}
else{
index = Str[i] - '1';
temp[i] = MirroredNum[index];
}
//0 和 O等价
if((temp[i] == '0' && Str[j] == 'O') || (temp[i] == 'O' && Str[j] == '0')){
continue;
}
if(temp[i] != Str[j]){
return 0;
}
}
return 1;
}
int main (){
char Str[21];
int i,len,IsP,IsM;
//freopen("C:\\Users\\XIAOSI\\Desktop\\acm.txt","r",stdin);
while(scanf("%s",Str) != EOF){
len = strlen(Str);
printf("%s -- ",Str);
//回文字符串
IsP = IsPalindromes(Str);
//镜面字符串
IsM = IsMirrored(Str);
//输出
if(IsP == 0 && IsM == 0){
printf("is not a palindrome.\n");
}
else if(IsP == 1 && IsM == 1){
printf("is a mirrored palindrome.\n");
}
else if(IsP == 1 && IsM == 0){
printf("is a regular palindrome.\n");
}
else if(IsP == 0 && IsM == 1){
printf("is a mirrored string.\n");
}
printf("\n");
}
return 0;
}
/*********************************
* 日期:2013-4-22
* 作者:SJF0115
* 题号: 题目401 - Palindromes
* 来源:http://uva.onlinejudge.org/index.php option=com_onlinejudge&Itemid=8&category=6&page=show_problem&problem=342
* 结果:AC
* 来源:UVA
* 总结:
**********************************/
#include
#include
char MirroredStr[] = {'A',' ',' ',' ','3',' ',' ','H',
'I','L',' ','J','M',' ','O',' ',' ',' ','2','T','U','V','W','X','Y','5'};
char MirroredNum[] = {'1','S','E',' ','Z',' ',' ','8',' '};
//判断是否是回文
int IsPalindromes(char Str[]){
int i,j;
for(i = 0,j = strlen(Str)-1;i < j;i++,j--){
//0 和 O等价
if((Str[i] == '0' && Str[j] == 'O') || (Str[i] == 'O' && Str[j] == '0')){
continue;
}
if(Str[i] != Str[j]){
return 0;
}
}
return 1;
}
//判断是否是镜像字符串
int IsMirrored(char Str[]){
char temp[21];
int i,j,index;
int len = strlen(Str);
for(i = 0,j = len-1;i < len;i++,j--){
if(Str[i] >= 'A' && Str[i] <= 'Z'){
index = Str[i] - 'A';
temp[i] = MirroredStr[index];
}
else{
index = Str[i] - '1';
temp[i] = MirroredNum[index];
}
//0 和 O等价
if((temp[i] == '0' && Str[j] == 'O') || (temp[i] == 'O' && Str[j] == '0')){
continue;
}
if(temp[i] != Str[j]){
return 0;
}
}
return 1;
}
int main (){
char Str[21];
int i,len,IsP,IsM;
//freopen("C:\\Users\\XIAOSI\\Desktop\\acm.txt","r",stdin);
while(scanf("%s",Str) != EOF){
len = strlen(Str);
printf("%s -- ",Str);
//回文字符串
IsP = IsPalindromes(Str);
//镜面字符串
IsM = IsMirrored(Str);
//输出
if(IsP == 0 && IsM == 0){
printf("is not a palindrome.\n");
}
else if(IsP == 1 && IsM == 1){
printf("is a mirrored palindrome.\n");
}
else if(IsP == 1 && IsM == 0){
printf("is a regular palindrome.\n");
}
else if(IsP == 0 && IsM == 1){
printf("is a mirrored string.\n");
}
printf("\n");
}
return 0;
}