UVA 401 回文词(30行你信吗)

来源:互联网 发布:厄运葬礼知乎 编辑:程序博客网 时间:2024/06/05 23:45

第一次做这个提的时候做了两三个小时没有做对,自己的方法海特啰嗦,看到书上有讲解,不得不服。

判断一个字符串是不是镜面回文串,分成两个部分,一个判断是回文,另一个是判断镜面,两个都符合那就是镜面回文,符合那个输出那个即可。

#include<stdio.h>#include<string.h>#include<ctype.h>char rev[40]= {"A   3  HIL JM O   2TUVWXY51SE Z  8 "}; //对应的镜面字母char mes[4][30]= {"is not a palindrome.",                  "is a regular palindrome.",                  "is a mirrored string.",                  "is a mirrored palindrome."                 };//方便输出char s[1001];char check(char ch){    if(isalpha(ch)) return rev[ch-'A'];//isalpha判断是否为字母,头文件为ctype.h。    return rev[ch-'0'+25];}int main(){    int i,j,n,m;    while(gets(s))    {        int len=strlen(s);        n=1,m=1;        for(i=0; i<len/2+1; i++)        {            if(s[i]!=s[len-i-1])  n=0;//不是回文            if(check(s[i])!=s[len-i-1]) m=0;//不是镜面        }        printf("%s -- %s\n\n",s,mes[m*2+n]);    }    return 0;}

0 0
原创粉丝点击