您的位置:首页 > 其它

UVaOJ 401 - Palindromes

2015-04-11 20:28 323 查看
#include <stdio.h>
#include <string.h>
#include <ctype.h>

char mirror[22] = {'A','E','H','I','J','L','M','O','S','T','U','V','W','X','Y','Z','1','2','3','5','8','\0'};
char raw[22] = {'A','3','H','I','L','J','M','O','2','T','U','V','W','X','Y','5','1','S','E','Z','8','\0'};

int look_up(char c);
int main(){
//freopen("in.txt","r",stdin);
char s[30];
while(gets(s)!=NULL){
int len = strlen(s);
bool isPalindrome = true;
for(int i =0;i<=len/2;i++){
if(s[i]!=s[len-1-i]) {isPalindrome = false;break;}
}
bool isMirrored = true;
for(int i = 0;i<len;i++){
int pos = look_up(s[i]);
if(pos != -1){
if(raw[pos] != s[len-1-i]){
isMirrored = false;
break;
}
}else{
isMirrored = false;
break;
}
}
printf("%s -- is ",s);
if(isPalindrome){
if(isMirrored){
printf("a mirrored palindrome.\n");
}else{
printf("a regular palindrome.\n");
}
}else{
if(isMirrored){
printf("a mirrored string.\n");
}else{
printf("not a palindrome.\n");
}
}
printf("\n");
}
return 0;
}

int look_up(char c){
for(int i = 0;i<22;i++){
if(mirror[i] == c)
return i;
}
return -1;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: