C++で回文文字列を判定する方法


方法1: 反転して比較する 回文の特徴は、前から読んでも後ろから読んでも同じになることです。そのため、文字列を反転させて元の文字列と比較すれば、回文かどうかを判定することができます。

以下は、この方法を使ったC++のコード例です。

#include <iostream>
#include <string>
#include <algorithm>
bool isPalindrome(const std::string& str) {
    std::string reversedStr = str;
    std::reverse(reversedStr.begin(), reversedStr.end());
    return str == reversedStr;
}
int main() {
    std::string input;
    std::cout << "文字列を入力してください: ";
    std::cin >> input;
    if (isPalindrome(input)) {
        std::cout << "回文です" << std::endl;
    } else {
        std::cout << "回文ではありません" << std::endl;
    }
    return 0;
}

方法2: 反対側からもアクセスする 回文の判定には、文字列の先頭と末尾から順に文字を比較する方法もあります。先頭の文字と末尾の文字が異なる場合、回文ではありません。以下は、この方法を使ったC++のコード例です。

#include <iostream>
#include <string>
bool isPalindrome(const std::string& str) {
    int start = 0;
    int end = str.length() - 1;
    while (start < end) {
        if (str[start] != str[end]) {
            return false;
        }
        start++;
        end--;
    }
    return true;
}
int main() {
    std::string input;
    std::cout << "文字列を入力してください: ";
    std::cin >> input;
    if (isPalindrome(input)) {
        std::cout << "回文です" << std::endl;
    } else {
        std::cout << "回文ではありません" << std::endl;
    }
    return 0;
}

以上が、C++で回文文字列を判定する方法のいくつかの例です。ご参考までにお使いください。