1 条题解

  • 0
    @ 2025-5-29 17:00:51
    #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
    上传者