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,922評論 2 36
  • leetcode刷題記錄本文記錄一下leetcode刷題記錄,記錄一下自己的解法和心得。 LeetCode Two...
    EarthChen閱讀 3,504評論 0 6
  • 53.計算字符 在字符串中獲取字符值的數量, 可以使用字符串字符屬性中的計數屬性: let unusualMena...
    無灃閱讀 1,134評論 0 4
  • 趙一段曾經認識一個彈鋼琴特別牛逼的男生。 起初,趙一段并沒有覺得這個相貌出眾氣質絕佳且會彈鋼琴的男生有什么過人之處...
    企鵝小團子閱讀 253評論 0 0
  • 初遇那次 覺得他好丑 可命運總是無常 他固執闖入我的世界 吃我 咬我 沖我發火 沖我笑 這樣蠻橫的愛讓我深陷 而分...
    梅子的小宇宙閱讀 225評論 0 0