题解 | #最长回文子串#

最长回文子串

https://www.nowcoder.com/practice/b4525d1d84934cf280439aeecc36f4af

方法:循环遍历

1、遍历数组,以数组每个元素为中心寻找最长的回文子串长度;

2、遍历完数组就能得到最长的回文子串。

时间复杂度:o(n2)

空间复杂度:o(1)

class Solution {
  public:
    int getLongestPalindrome(string A) {
        // 特殊情况处理
        if (A.length() == 1)
            return 1;

        int max_len = 1;
        for (int i = 0; i < A.length() - 1; i++) {
            // 分奇数和偶数区寻找最长的回文子串长度
            max_len = max(max_len, max(getLen(A, i, i), getLen(A, i, i + 1)));
        }

        return max_len;
    }

    int getLen(string& A, int begin, int end) {
        while (begin >= 0 && end < A.length() && A[begin] == A[end]) {
            begin--;
            end++;
        }
        return end - begin - 1;
    }
};

刷题题解(c++) 文章被收录于专栏

算法题题解(c++)

全部评论

相关推荐

2025-12-11 14:24
门头沟学院 Java
牛客35720396...:不要用boss,全是骗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务