原题:
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=6&page=show_problem&problem=342
题目大意:
文中规定描述了如下三个概念:
1) “regular palindrome(常规回文)”: 从前往后读与从后往前读是一样的。
2) “mirrored string(镜式串)”: 对于字符串的中轴呈轴对称。
3) “mirrored palindrome(镜式回文)”: 同时满足1) 、2)条件的串。
对于镜式串的定义,还给出了有效的原字符及其对应的翻转字符表。
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 |
注意,原题中说字母“o”和数字“0”可以看作相等的字符,因此只有字母“o”是合法字符。题意没错,只是把“o”和“0”打错了。
要求我们根据给出的长度1~20的字符串,判断其相应的类型,并输出规定的结果。
解题分析:
一道普通的字符串处理类的题目。判断类型的题目,我倾向于设置类型标识。根据处理得到的标识得到其类型。
伪代码:
1 保存原字符与翻转字符的对应关系。
2 判断是否为回文串。
2.1 是 -> 添加回文串标志。
2.2 不是 -> 空操作。
3 判断是否为镜式串。
3.1 是 ->添加镜式串标志。
3.2 不是 -> 空操作。
4 根据类型标志判断给定串的类型,输出相应结果。
源码: