A regular palindrome is a string of numbers or letters that is the same forward as backward. For example, the string
"ABCDEDCBA" is apalindrome because it is the same when the string is read from left to right as when the string is read from right to left.
A mirrored string is a string for which when each of the elements of the string is changed to its reverse (if it has a reverse) and the string is read backwards the result is the same as the original string. For example, the string
"3AIAE" is a mirrored string because "A"and "I" are their own reverses, and
"3" and "E"are each others' reverses.
A mirrored palindrome is a string that meets the criteria of a regular palindrome and the criteria of a mirrored string. The string
"ATOYOTA"is a mirrored palindrome because if the string is read backwards, the string is the same as the original and because if each of the characters is replaced by its reverse and the result is read backwards, the result is the same as the original
string. Of course, "A", "T","O", and "Y" are all their own reverses.
A list of all valid characters and their reverses is as follows.
Character |
Reverse |
Character |
Reverse |
Character |
Reverse |
A |
A |
M |
M |
Y |
Y |
B |
|
N |
|
Z |
5 |
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 |
|
|
Note that O (zero) and 0 (the letter) are considered the same character and therefore
ONLY the letter "0" is a valid character.
Input consists of strings (one per line) each of which will consist of one to twenty valid characters. There will be no invalid characters in any of the strings. Your program should read to the end of file.
For each input string, you should print the string starting in column 1 immediately followed by exactly one of the following strings.
STRING |
CRITERIA |
" -- is not a palindrome." |
if the string is not a palindrome and is not a mirrored string |
" -- is a regular palindrome." |
if the string is a palindrome and is not a mirrored string |
" -- is a mirrored string." |
if the string is not a palindrome and is a mirrored string |
" -- is a mirrored palindrome." |
if the string is a palindrome and is a mirrored string |
Note that the output line is to include the -'s and spacing exactly as shown in the table above and demonstrated in the Sample Output below.
In addition, after each output line, you must print an empty line.
NOTAPALINDROME
ISAPALINILAPASI
2A3MEAS
ATOYOTA
NOTAPALINDROME -- is not a palindrome.
ISAPALINILAPASI -- is a regular palindrome.
2A3MEAS -- is a mirrored string.
ATOYOTA -- is a mirrored palindrome.
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
char reback(char ch);
int ispa(char s[],int len);
int ismi(char s[],int len);
int main()
{
char s[1000];
int len;
while(scanf("%s",s)!=EOF)
{
len=strlen(s);
if(len==1)
{
if(s[0]!=reback(s[0]))
printf("%s -- is a regular palindrome.\n\n",s);
else printf("%s -- is a mirrored palindrome.\n\n",s);
}
else if(ispa(s,len)&&ismi(s,len))
{
printf("%s -- is a mirrored palindrome.\n\n",s);
}
else if(ispa(s,len))
{
printf("%s -- is a regular palindrome.\n\n",s);
}
else if(ismi(s,len))
{
printf("%s -- is a mirrored string.\n\n",s);
}
else
{
printf("%s -- is not a palindrome.\n\n",s);
}
}
return 0;
}
char reback(char ch)
{
switch(ch)
{
case 'A':return 'A';
case 'E':return '3';
case 'H':return 'H';
case 'I':return 'I';
case 'J':return 'L';
case 'L':return 'J';
case 'M':return 'M';
case 'O':return 'O';
case 'S':return '2';
case 'T':return 'T';
case 'U':return 'U';
case 'V':return 'V';
case 'W':return 'W';
case 'X':return 'X';
case 'Y':return 'Y';
case 'Z':return '5';
case '1':return '1';
case '2':return 'S';
case '3':return 'E';
case '5':return 'Z';
case '8':return '8';
default:return ' ';
}
}
int ispa(char s[],int len)
{
int i;
for(i=0;i<len/2;i++)
{
if(s[i]!=s[len-1-i])return 0;
}
return 1;
}
int ismi(char s[],int len)
{
int i;
for(i=0;i<len/2;i++)
{
if(reback(s[i])!=s[len-1-i])return 0;
}
return 1;
}
分享到:
相关推荐
判断输入字符串是否为镜像或回文串。 来源于UVaOJ - 401. 水题。
主要是uvaoj习题相关题目 练习题目
世界著名大学UVA OJ平台上的题目部分分类,分的不好请原谅。
#uva解决方案我对一些... ### download.py脚本,用于下载问题的pdf描述### submit.py脚本,用于向UVa OJ提交解决方案,而无需通过浏览器中的表单来完成### open.py脚本,用于在浏览器中打开问题网址(该网址先前是由c
用C语言实现,用较简单的方法实现找中间数
UVAOJ上题号为458的题目PDF版,更多资源可以关注我的资源
UVA_OJ 竞赛问题的示例代码。
支持OJ ... {% oj uva 100 46705 %} {% oj github morris821028 hexo-tag-oj %} {% ojblock hex %} { "album" : [ { "cover": {"title": "<p>Stephanie Dola</p>", "class": "hex-1", "img" :
uva705 Slash Maze 的代码,在UVaOJ上通过
包含UVA在线OJ系统的绝大部分的示例代码,并都已AC,可在刷题时参考
在线OJ网址大全在线OJ网址大全在线OJ网址大全在线OJ网址大全
OJ习题.zip
搭建OJ平台的工具,方便大家搭建自己的OJ,建议大家使用ubuntu14.04版本,比较稳定
这是洛谷OJ题库导出文件,希望大家下载看看
西南科技大学OJ题答案西南科技大学OJ题答案西南科技大学OJ题答案西南科技大学OJ题答案西南科技大学OJ题答案
湖南大学ACM-OJ的部分题目代码,对学习数据结构和算法很有帮助
OJ系统的蓝桥杯题库,http://oj.xpuca.top/,这里有这些题的栗子。
这是大连东软信息学院的内部OJ题库,希望大家下载看看
这是聚石塔OJ题库导出文件,希望大家下载看看
oj 的c++类与对象之前包括类与对象的全答案