UVa 401 Palindromes(简单字符串)

来源:互联网 发布:软件无偿使用合同 编辑:程序博客网 时间:2024/05/19 01:58

  简单的判断是否是回文串、镜像串,然后自己写的真费劲,没逃掉刘汝佳的书,这里的代码很有技巧性,特别值得学习,额,其实他书上的代码都很精简

CharacterReverseCharacterReverseCharacterReverseAAMMYYB N Z5C OO11D P 2SE3Q 3EF R 4 G S25ZHHTT6 IIUU7 JLVV88K WW9 LJXX 这个要用一维数组存储

题意:

思路:

/*UVa 401 Palindromes题意:输入一个字符串,判断其是否是回文串或者镜像串输入的字符可能会有不合法的镜像字符,但是保证没有0,其他所有字母和9个数字思路:没逃掉刘汝佳的书,将镜像的字符存在一个数组里面,将输出的字符串存在一个数组里面,不过确实挺好用,然后就是简单的首位循环判断了*/#include<iostream>#include<cstdio>#include<cstring>#include<ctype.h>using namespace std;char rev[40]="A   3  HIL JM O   2TUVWXY51SE Z  8 ";char judge(char c)//相应的镜像符号{    if(isalpha(c))//如果是字母        return rev[c-'A'];    return rev[c-'0'+25];//如果是数字,+25字母}int main(){    char output[4][30]={"is not a palindrome.","is a regular palindrome.",    "is a mirrored string.","is a mirrored palindrome."};//巧妙,省事    char str[25];    while(scanf("%s",str)!=EOF)    {        int len=strlen(str);        int flag1=1,flag2=1;        for(int i=0;i<(len+1)/2;i++)        {            if(str[i]!=str[len-i-1])//是否回文                flag1=0;            if(judge(str[i])!=str[len-i-1])//是否镜像                flag2=0;        }        //竟然注释掉cout<<flag1<<" "<<flag2<<endl;        printf("%s -- %s\n\n",str,output[flag2*2+flag1]);    }    return 0;}/*NOTAPALINDROMEISAPALINILAPASI2A3MEASATOYOTA*/


0 0
原创粉丝点击