回文文字列は、前から読んでも後ろから読んでも同じになる文字列です。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; }
-
両端から比較していく方法: 文字列の最初と最後の文字を比較し、一致しているかどうかを確認します。一致していれば、次の文字を比較します。一致しない場合は、回文文字列ではありません。
#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++で回文文字列を効率的に判定することができます。どちらの方法も簡潔で理解しやすいです。選ぶ方法は好みによります。