回文串是从左到右或者从右到左读起来都一样的字符串,试编程判别一个字符串是否为回文串。 C++实验课程中,要求设计如下函数来实现: bool isPalindrome (const string& s) 主函数中用getline或者cin读取字符串,调用上面的函数判断,在主函数中输出结果。
时间: 2024-02-22 16:58:03 浏览: 16
好的,这个问题很简单,可以使用双指针的方法来判断一个字符串是否为回文串。具体的实现如下:
```cpp
bool isPalindrome(const string& s) {
int left = 0, right = s.size() - 1;
while (left < right) {
if (s[left] != s[right]) {
return false;
}
left++;
right--;
}
return true;
}
```
上面的代码中,我们使用双指针分别指向字符串的首尾字符,然后从两端同时向中间扫描。每次比较左右指针所指向的字符是否相同,如果不同,则说明不是回文串,直接返回 false;如果一直比较到左右指针相遇,则说明是回文串,返回 true。
在主函数中,可以使用 getline 或者 cin 来读取字符串,然后调用 isPalindrome 函数来判断是否为回文串,代码如下:
```cpp
#include <iostream>
#include <string>
using namespace std;
bool isPalindrome(const 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;
getline(cin, s);
if (isPalindrome(s)) {
cout << "Yes" << endl;
} else {
cout << "No" << endl;
}
return 0;
}
```
上面的代码中,我们使用 getline 函数来读取一行字符串,然后调用 isPalindrome 函数来判断是否为回文串。如果是回文串,则输出 "Yes",否则输出 "No"。