C++ 采用字符串容器存储,设计算法判断该字符串是否为回文
时间: 2023-12-13 14:47:46 浏览: 84
C++判断一串字符是否为回文源程序
可以使用双指针算法来判断一个字符串是否为回文。具体实现步骤如下:
1. 定义两个指针,一个指向字符串的开头,一个指向字符串的结尾。
2. 循环比较两个指针所指向的字符是否相等,如果不相等,则该字符串不是回文,直接返回 false。
3. 如果两个指针所指向的字符相等,则将两个指针分别向中间移动一位,重复步骤 2 直到两个指针指向同一个位置或者左指针的位置大于右指针的位置。
4. 如果步骤 3 结束时左指针的位置大于等于右指针的位置,则该字符串是回文,返回 true。
下面是一份示例代码:
```c++
#include <iostream>
#include <string>
using namespace std;
bool isPalindrome(string s) {
int left = 0, right = s.size() - 1;
while (left < right) {
if (s[left] != s[right]) {
return false;
}
left++;
right--;
}
return true;
}
int main() {
string s = "abcba";
if (isPalindrome(s)) {
cout << s << " is a palindrome" << endl;
} else {
cout << s << " is not a palindrome" << endl;
}
return 0;
}
```
在这个示例代码中,我们定义一个 `isPalindrome` 函数来判断一个字符串是否为回文。在函数内部,我们定义了两个指针 `left` 和 `right`,分别指向字符串的开头和结尾。然后使用 `while` 循环来比较两个指针所指向的字符是否相等,如果不相等则返回 false,如果相等则将两个指针向中间移动一位,重复比较直到两个指针相遇或者左指针的位置大于右指针的位置。最后,如果左指针的位置大于等于右指针的位置,则该字符串是回文,返回 true。
阅读全文