Palindrome(uva 401)

来源:互联网 发布:测试脸型软件 编辑:程序博客网 时间:2024/06/17 00:27

比较简单的字符串问题。通过练习,重温了一下读入字符串的方法,测量字符串的长度。

下面是代码,注释的部分为我不明白的地方,为什么这样一一对应的写出来,却一直是WA!!! 求指点,不过我也承认存成两个数组比较简洁。

#include<iostream>#include<stdio.h>#include<cstring>#include<string.h>using namespace std;char b;char m[25];const char one[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789";const char two[]="A   3  HIL JM O   2TUVWXY51SE Z  8 ";int pos(char ch){for (int i=0;one[i]!='\0';i++){if (ch == one[i]) return i;}}int Mirror(){int start=0,end=strlen(m)-1;while(start<=end){int t=pos(m[start]);if (m[end]==two[t]){start++;end--;}else return 0;}return 1;}/*char Mirror(char a){if ((a=='A')||(a=='M')||(a=='Y')||(a=='1')||(a=='H')||(a=='T')||(a=='I')||(a=='U')||(a=='V')||(a=='8')||(a=='W')||(a=='X')||(a=='O')){return a;}else if (a=='0'){b='O';return b;}else{switch(a){case 'Z':{b='5';break;}case '5':{b='Z';break;}case '2':{b='S';break;}case 'S':{b='2';break;}case 'E':{b='3';break;}case '3':{b='E';break;}case 'J':{b='L';break;}case 'L':{b='J';break;}default:{b=' ';}}return b;}}*/int main(){int len,check1,check2;//check1回文标志位,check2镜像标志位char M;while(gets(m)){len=strlen(m);check1=1;for(int i=0;i<len/2;i++){if(m[len-1-i]!=m[i]){check1=0;break;}}/*check2=1;for(int j=0;j<len/2;j++){M=Mirror(m[j]);if(m[len-1-j]!=M){check2=0;break;}}*/check2=Mirror();if (check1==0&&check2==0){printf("%s -- is not a palindrome.\n\n",m);}else if(check1==1&&check2==0){printf("%s -- is a regular palindrome.\n\n",m);}else if(check1==0&&check2==1){printf("%s -- is a mirrored string.\n\n",m);}else if(check1==1&&check2==1){printf("%s -- is a mirrored palindrome.\n\n",m);}}return 0;}


0 0
原创粉丝点击