401 - Palindromes

Problem.png

每次输入一行字符串(不含空格),判断该字符串是否为回文串和镜像串,分四种情况输出。
注意回文串和镜像串的判断是独立的,可以在一个for循环里用两个if分别判断。
获取某个字符所对应的reverse时,注意利用字符的ASCII码来计算下标会方便很多。

char getReverse(char ch) {
    if (ch >= 'A' && ch <= 'Z') {
        return reve[ch - 'A'];
    }
    else {
        return reve[ch - '0' + 25];
    }
}

将字符对应的reverse存成常量string

#include <string>
#include <iostream>

using namespace std;

string reve = "A###3##HIL#JM#O###2TUVWXY51SE#Z##8#";

// 利用字符的ASCII码来计算下标
char getReverse(char ch) {
    if (ch >= 'A' && ch <= 'Z') {
        return reve[ch - 'A'];
    }
    else {
        return reve[ch - '0' + 25];
    }
}

int main() {
    string str;
    while (cin >> str) {
        bool mirror = true, palin = true;
        int len = str.length();

        for (int i = 0; i <= len / 2; i++) {
            // 判断是否为回文串
            if (str[i] != str[len - 1 - i]) {
                palin = false;
            }

            // 判断是否为镜像串
            if (getReverse(str[i]) != str[len - 1 - i]) {
                mirror = false;
            }
        }

        if (palin && mirror) {
            cout << str << " -- is a mirrored palindrome." << endl << endl;
        }
        else if (palin && !mirror) {
            cout << str << " -- is a regular palindrome." << endl << endl;
        }
        else if (!palin && mirror) {
            cout << str << " -- is a mirrored string." << endl << endl;
        }
        else {
            cout << str << " -- is not a palindrome." << endl << endl;
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • LeetCode 刷题随手记 - 第一部分 前 256 题(非会员),仅算法题,的吐槽 https://leetc...
    蕾娜漢默阅读 17,979评论 2 36
  • leetcode刷题记录本文记录一下leetcode刷题记录,记录一下自己的解法和心得。 LeetCode Two...
    EarthChen阅读 3,517评论 0 6
  • 53.计算字符 在字符串中获取字符值的数量, 可以使用字符串字符属性中的计数属性: let unusualMena...
    无沣阅读 1,151评论 0 4
  • 赵一段曾经认识一个弹钢琴特别牛逼的男生。 起初,赵一段并没有觉得这个相貌出众气质绝佳且会弹钢琴的男生有什么过人之处...
    企鹅小团子阅读 254评论 0 0
  • 初遇那次 觉得他好丑 可命运总是无常 他固执闯入我的世界 吃我 咬我 冲我发火 冲我笑 这样蛮横的爱让我深陷 而分...
    梅子的小宇宙阅读 226评论 0 0