解法1:遍历一半字符串
若字符串个数为奇数遍历到n/2
若为偶数则遍历到n/2-1中间最后只剩一个字符不需判断
(int是向下取整的)
假设字符串长度为len,字符下标从0~len-1
先看第0个和第len-1字符是否相同,
在看第1和第len-2字符是否相同…
看第i和第len-i-1字符是否相同
遍历一半字符串,即可完成上述比较。如果出现对应字符不同的情况,那么这个字符串不是回文串。如果对应字符都相同,那么它是回文串。
int main()
{string s;cin >> s;int len = s.size() - 1;//去掉最后的'.'for (int i = 0; i <len / 2; i++){if (s[i] != s[len - i-1]){cout <<"No";return 0;}}cout << "Yes";return 0;
}
解法2:string容器的内置反转函
将字符串复制到另一个变量中,利用reverse函数将字符串反转,最后直接比较原字符串与反转字符串即可。
#include<iostream>
using namespace std;
int main()
{string s, s1;cin >> s;s.pop_back();//去掉末尾的'.'s1 = s;reverse(s1.begin(), s1.end());if (s == s1)cout << "Yes";elsecout << "No";return 0;
}