方法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++で回文文字列を判定する方法のいくつかの例です。ご参考までにお使いください。