【题目】
输入一个字符串,判断它是否是回文串以及镜像串。
输入字符串保证不含数字0。回文串就是反转以后和原串相同,如 abba 和 madam。所谓镜像就是左右镜像之后和原串相同,如 2S 和 3AIAE。
Character | Reverse | Character | Reverse | Character | Reverse |
---|
A | A | M | M | Y | Y |
B | | N | | Z | Z |
C | | O | O | 1 | 1 |
D | | P | | 2 | S |
E | 3 | Q | | 3 | E |
F | | R | | 4 | |
G | | S | 2 | 5 | Z |
H | H | T | T | 6 | |
I | I | U | U | 7 | |
J | L | V | V | 8 | 8 |
K | | W | W | 9 | |
L | J | X | X | | |
#include <stdio.h>
#include <string.h>
const char l[]="A 3 HIL JM O 2TUVWXY51SE Z 8 ";
int main()
{
char s[105];
while(scanf("%s",s)!=EOF)
{
int len = strlen(s);
int p = 0, q = 0;
for(int i = 0; i < len/2; ++i)
{
if(s[i]==s[len-1-i])
p++;
}
if(p == len/2)
printf("是回文字符串\n");
else
printf("不是回文字符串\n");
if(len%2==0)
{
for(int i = 0; i < len/2; ++i)
{
int j = (s[i]-65)-'0';
if(l[j]!=' ')
q++;
}
if(q==len/2)
printf("是镜像字符串\n");
else
printf("不是镜像字符串\n");
}
else{
for(int i = 0; i < len/2; ++i)
{
int j = (s[i]-65)-'0';
if(l[j]!=' ')
q++;
}
if(l[(s[len/2]-65)-'0']!=' ')
q++;
if(q==(len/2)+1)
printf("是镜像字符串\n");
else
printf("不是镜像字符串");
}
}
return 0;
}