📅  最后修改于: 2023-12-03 15:29:43.161000             🧑  作者: Mango
回文是指正反顺序都相同的字符串。例如,"racecar"和"level"都是回文。
可以使用双指针算法来检查一个字符串是否为回文。双指针算法,顾名思义,就是使用两个指针分别从字符串的起始位置和末尾位置进行遍历,比较它们所指向的字符是否相同,一旦出现不同的情况,则说明该字符串不是回文。
在C++中,可以使用以下代码实现双指针算法:
#include <iostream>
using namespace std;
bool isPalindrome(string s) {
int i = 0, j = s.size() - 1;
while (i < j) {
if (s[i] != s[j]) {
return false;
}
i++;
j--;
}
return true;
}
int main() {
string s;
cout << "Please enter a string: ";
cin >> s;
if (isPalindrome(s)) {
cout << s << " is a palindrome." << endl;
} else {
cout << s << " is not a palindrome." << endl;
}
return 0;
}
以上代码中,isPalindrome函数使用了两个指针变量i和j,分别指向字符串的起始位置和末尾位置。在while循环中,每次判断i所指向的字符是否等于j所指向的字符,如果不相等,则说明该字符串不是回文,返回false;如果相等,则将i向后移动一位,j向前移动一位,继续进行比较。当i>=j时,说明该字符串是回文,返回true。
在main函数中,先输入待检查的字符串,然后调用isPalindrome函数进行判断,最后输出判断结果。
以上为C++程序检查给定字符串是否为回文的介绍。