题目
输入一个字符串并打印该字符串是否是回文(回文是向后和向前读取相同内容的字符串)。
方法1(反转对比法):
思路
使用reverse()
反转字符串,再与原字符串对比,若一样则原字符串为回文,反之。
代码
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main() {
string str1;
cout << "请输入一个字符串:";
cin >> str1;
string str2 = str1;
reverse(str2.begin(), str2.end());//反转字符串
if (str1 == str2){
cout << "yes" << endl;
}
else{
cout << "no" << endl;
}
return 0;
}
方法2(扫描法):
思路
利用双指针,从两边往中间扫
代码
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main(){
string a;
cin>>a;
int l=0,r=a.length()-1;
while(l<r){
if(a[l] != a[r]) break;
l++;r--;
}
if (l < r) cout << a << "不是回文串" << endl;
else cout << a << "是回文串" << endl;
return 0;
}
参考文章:判断字符串回文