题解
判断回文串
1 条题解
-
0
解题思路
回文串就是正着读和倒着读完全一样的字符串,比如
aba、abba。怎么判断?把字符串左右对称地比较:
- 第 0 个字符和倒数第 1 个(下标 n-1)比;
- 第 1 个字符和倒数第 2 个(下标 n-2)比;
- 第 i 个字符和下标 n-1-i 的字符比。
因为对称关系,只需要比较前半部分(i 从 0 到 n/2-1)就足够了。只要发现有一对不一样,就说明不是回文,可以立刻停下输出
No。如果全部一样,输出Yes。注意:题目要求输出的是
Yes和No(首字母大写),不要写成YES和NO。举例:
aba,第 0 个a和倒数第 0 个a相同,第 1 个b和自己相同,所以是回文,输出Yes。参考代码
// 判断回文串:正读反读相同则输出Yes,否则输出No #include <iostream> using namespace std; int main() { string s; // 待判断的字符串 cin >> s; int n = s.size(); // 字符串长度 bool ok = true; // 默认是回文 for (int i = 0; i < n / 2; i++) // 只需比较前半和后半 if (s[i] != s[n - 1 - i]) { // 对称位置字符不同 ok = false; break; } cout << (ok ? "Yes" : "No") << endl; return 0; }复杂度分析
字符串长度小于 100。只需要比较 n/2 对字符,每对比较一次,时间复杂度 O(n),空间 O(n)(保存字符串)。
- 1