C++で文字列が回文かどうかをチェックする方法


以下に、シンプルで簡単な方法といくつかのコード例を示します。

方法1: 反転して比較する方法 この方法では、与えられた文字列を反転させたものと元の文字列を比較します。もし二つが等しければ、文字列は回文です。

#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: 双方向ポインタを使用する方法 この方法では、文字列の先頭と末尾からポインタを進めながら、対応する文字を比較します。ポインタが交差するまで文字が一致していれば、文字列は回文です。

#include <iostream>
#include <string>
bool isPalindrome(const std::string& str) {
    int left = 0;
    int right = str.length() - 1;
    while (left < right) {
        if (str[left] != str[right]) {
            return false;
        }
        left++;
        right--;
    }
    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++で文字列が回文かどうかをチェックすることができます。ご参考までに、上記のコード例を使って実際に試してみてください。