A regular palindrome is a string of numbers or letters that is the same forward as backward. For example, the string "ABCDEDCBA" is a palindrome 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

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.

Output

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.

Sample Input

NOTAPALINDROME
ISAPALINILAPASI
2A3MEAS
ATOYOTA

Sample Output

NOTAPALINDROME -- is not a palindrome.

ISAPALINILAPASI -- is a regular palindrome.

2A3MEAS -- is a mirrored string.

ATOYOTA -- is a mirrored palindrome.
思路:此题考察回文串,镜像串,回文串就是正反字符串都相等,而镜像串则是要转换对应字符后反过来和以前的相同
#include<stdio.h>
#include<string.h>
#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 r(char ch) {
if(isalpha(ch)) return rev[ch - 'A'];
return rev[ch - '0' + 25];
} int main() {
char s[30];
while(scanf("%s", s) == 1) {
int len = strlen(s);
int p = 1, m = 1;
for(int i = 0; i < (len+1)/2; i++) {
if(s[i] != s[len-1-i]) p = 0; // 不是回文串
if(r(s[i]) != s[len-1-i]) m = 0; // 不是镜像串
}
printf("%s -- is %s.\n\n", s, msg[m*2+p]);
}
return 0;
}

最新文章

  1. 在Azure上的VM镜像库中找到想要的镜像
  2. Linux随笔之——./configure、make、make install(转)
  3. DNS bind子域授权安装
  4. 《DSP using MATLAB》示例Example4.14
  5. mysql数据库入门
  6. MongoDB:Replica Set 之操作日志 Oplog
  7. day54
  8. (转)Java多线程之Lock的使用 (待整理)
  9. JAVA物联网九大核心热点技术
  10. 使用 CSS3 实现 3D 图片滑块效果
  11. python学习笔记之线程、进程和协程(第八天)
  12. error: ‘module’ object has no attribute ‘_rebuild_tensor_v2’
  13. centos7配置网易yum源
  14. ML.NET 示例:聚类之鸢尾花
  15. Java接口自动化测试之HTTPClient学习(四)
  16. MySQL高性能优化系列-目录
  17. [C++]Qt程式异常崩溃处理技巧(Win)
  18. 『TensorFlow』模型保存和载入方法汇总
  19. 关于安装SVN Service 出错 Service &#39;VisualSVN Server&#39; failed to start. Please check VisualSVN Server log in Event Viewer for more details
  20. 【ActiveMQ】之安全机制(二)客户端连接安全

热门文章

  1. Laravel的维护模式
  2. 计蒜客 时间复杂度 (模拟) &amp; 洛谷 P3952 时间复杂度
  3. 训练1-B
  4. Python IO编程-读写文件
  5. CF49A Sleuth
  6. SVN打tag
  7. 通达OA 小飞鱼工作流在线培训教程(一)HTML基础介绍
  8. servletConfig和ServletContext 以及servletContextListener介绍
  9. POJ 3260 DP
  10. Spring《五》集合的注入方式