C++で回文をチェックする方法


  1. 反転して比較する方法: この方法では、与えられた文字列を反転させて元の文字列と比較します。もし反転させた文字列と元の文字列が一致していれば、回文であると判断できます。

    #include <iostream>
    #include <string>
    #include <algorithm>
    bool isPalindrome(const std::string& str) {
       std::string reversed = str;
       std::reverse(reversed.begin(), reversed.end());
       return str == reversed;
    }
    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 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++で回文をチェックするための基本的なアルゴリズムを理解し、必要に応じてカスタマイズしてください。