C++における回文文字列の解法


回文文字列は、前から読んでも後ろから読んでも同じになる文字列です。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 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++で回文文字列を効率的に判定することができます。どちらの方法も簡潔で理解しやすいです。選ぶ方法は好みによります。