1 条题解
-
0
#include <iostream> #include <cstring> #include <cctype> #include <cstdio> using namespace std; int main() { // 初始化镜像映射表,所有元素初始化为0(表示没有镜像) char mirrorMap[128] = {0}; // 设置有效字符的镜像映射(根据题目表格) mirrorMap['A'] = 'A'; mirrorMap['E'] = '3'; mirrorMap['H'] = 'H'; mirrorMap['I'] = 'I'; mirrorMap['J'] = 'L'; mirrorMap['L'] = 'J'; mirrorMap['M'] = 'M'; mirrorMap['O'] = 'O'; mirrorMap['S'] = '2'; mirrorMap['T'] = 'T'; mirrorMap['U'] = 'U'; mirrorMap['V'] = 'V'; mirrorMap['W'] = 'W'; mirrorMap['X'] = 'X'; mirrorMap['Y'] = 'Y'; mirrorMap['Z'] = '5'; mirrorMap['1'] = '1'; mirrorMap['2'] = 'S'; mirrorMap['3'] = 'E'; mirrorMap['5'] = 'Z'; mirrorMap['8'] = '8'; char s[25]; // 用于存储输入字符串(最长20个字符,加上结束符) while (cin >> s) { // 读取每个字符串直到文件结束 int len = strlen(s); bool is_palin = true; bool is_mirr = true; // 检查是否为回文:比较对称位置的字符 for (int i = 0; i < len / 2; i++) { if (s[i] != s[len - 1 - i]) { is_palin = false; break; } } // 检查是否为镜像:包括中间位置 for (int i = 0; i < (len + 1) / 2; i++) { char c1 = s[i]; char c2 = s[len - 1 - i]; // 检查c1是否有镜像映射 if (mirrorMap[c1] == 0) { is_mirr = false; break; } // 检查c1的镜像是否等于c2 if (mirrorMap[c1] != c2) { is_mirr = false; break; } } // 根据结果输出 cout << s << " -- "; if (is_palin && is_mirr) { cout << "is a mirrored palindrome."; } else if (is_palin) { cout << "is a regular palindrome."; } else if (is_mirr) { cout << "is a mirrored string."; } else { cout << "is not a palindrome."; } cout << endl << endl; // 每个输出后跟一个空行 } return 0; }
- 1
信息
- ID
- 591
- 时间
- 1000ms
- 内存
- 10MiB
- 难度
- 7
- 标签
- 递交数
- 9
- 已通过
- 0
- 上传者