您的位置:首页 > 其它

401 Palindromes(回文串与镜像串)

2017-10-08 11:26 246 查看
#include<cstdio>
#include<cstring>
#include<ctype.h>
const char rev[] = "A   3  HIL JM O   2TUVWXY51SE Z  8 ";
const char* msg[] = {"not a palindrome","a regular palindrome","a mirrored string","a mirrored palindrome"};

char mir(char c)
{
if(isalpha(c))
{
return rev[c - 'A'];
}
else
{
return rev[c - '0' + 25];
}
}

int main()
{
char s[30];
while(~scanf("%s",s))
{
int len = strlen(s);
int p = 1,m = 1;
for(int i = 0;i < (len+1)/2;i++)
{
if(s[i] != s[len-i-1])
{
p = 0;
}
if(mir(s[i]) != s[len-i-1])
{
m = 0;
}
}
printf("%s -- is %s.\n\n",s,msg[m*2 + p]);
}
}

解析:

1.使用常量数组rev保存每个字符的镜像字符

2.使用字符串数组msg保存输出信息

3.设计函数mir返回每个字符的镜像字符,注意字母和数字分别处理

4.声明两个标志值p和m记录是否为回文串或镜像串

5.巧妙地利用msg[m*2 +p]简化输出
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息