要判断一个字符串是否是回文,可以使用以下几种方法:
双指针法
初始化两个指针,一个指向字符串的开头,另一个指向字符串的末尾。
比较两个指针所指向的字符是否相同,如果相同,则将两个指针分别向中间移动一位,继续比较下一对字符。
如果所有对应的字符都相同,则该字符串是回文;否则,不是回文。
递归法
递归地判断字符串的首尾字符是否相同,并对去掉首尾字符的子串进行同样的判断。
如果字符串长度为0或1,则它是回文;否则,继续递归判断。
循环法
使用一个循环从字符串的开头遍历到末尾,同时使用另一个循环从末尾遍历到开头。
在每次迭代中,比较两个循环中的字符是否相同。
如果所有对应的字符都相同,则该字符串是回文;否则,不是回文。
```cpp
include include using namespace std; bool isPalindrome(const string& str) { int left = 0; int right = str.length() - 1; while (left < right) { if (str[left] != str[right]) { return false; } left++; right--; } return true; } int main() { string input; cout << "请输入一个字符串: "; cin >> input; if (isPalindrome(input)) { cout << input << " 是回文" << endl; } else { cout << input << " 不是回文" << endl; } return 0; } ``` 这个程序首先定义了一个`isPalindrome`函数,该函数使用双指针法判断输入的字符串是否是回文。然后在`main`函数中,程序接受用户输入的字符串,并调用`isPalindrome`函数进行判断,最后输出结果。