UVA 之401 - Palindromes(二)

2014-11-24 12:19:55 · 作者: · 浏览: 4
{
  • 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;
  • }