top1编程
← 返回题目
题解

判断回文串

1 条题解

  • 0
    @ 2026-8-5 10:18:17

    解题思路

    回文串就是正着读和倒着读完全一样的字符串,比如 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