2014年9月3日星期三

[UVa] 401 - Palindromes


#include <stdio.h>
#include <string.h>
char c[100]={'\0'};
char mirror[]="AAE3HHIIJLLJMMOOS2TTUUVVWWXXYYZ500112S3E5Z88"; //建立鏡像對照表
int is_mirror(char a, char b){
  for(int i=0;i<strlen(mirror);i++){
    if(a==mirror[i] && b==mirror[i+1]){  //如果此字元和下一字元比較相同,傳回1
   return 1;
 }
  }
  //沒回傳則傳回0
  return 0;
}
int main(){
   //freopen("input.txt", "r", stdin);
   //freopen("output.txt", "w", stdout);

  while(scanf("%s",c)!=EOF){
    for(int i=0;i<100;i++)if(c[i]==' ')c[i]='\0'; //把字串之後的空白也初始化為\0
    int ispalin=1 , ismirror=1;
 //printf("%d\n", strlen(c));

 for(int i=0;i<strlen(c)/2;i++){//比較回文
   if(c[i]!=c[strlen(c)-i-1]){
     ispalin=0;
   }
 }
 for(int i=0;i<strlen(c);i++){//比較字串
   if(!is_mirror(c[i], c[strlen(c)-i-1])){
     ismirror=0;
   }
 }
 
    if(ispalin && !ismirror)printf("%s -- is a regular palindrome.\n\n",c);
 if(!ispalin && ismirror)printf("%s -- is a mirrored string.\n\n",c);
 if(ispalin && ismirror)printf("%s -- is a mirrored palindrome.\n\n",c);
 if(!ispalin && !ismirror)printf("%s -- is not a palindrome.\n\n",c);
 for(int i=0;i<25;i++)c[i]='\0';
  }
  return 0;
} 

沒有留言: