算法题-最长回文子串

描述

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

示例1

输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。

示例2

输入: "cbbd"
输出: "bb"

解答

var longestPalindrome = function(s) {
    let maxStr = ''
    let len = s.length
    for (let i = 0; i < len; i++) {
        let curStr = s[i]
        let j = i - 1
        let k = i + 1
        while(k < len && s[k] === s[i]){
            curStr = curStr + s[k]
            k++
        }
        i = k - 1
        while (j >= 0 && k < len) {
            if (s[j] !== s[k]) {
                break
            }
            curStr = s[j] + curStr + s[k]
            j--
            k++
        }
        if (curStr.length > maxStr.length) {
            maxStr = curStr
        }
    }
    return maxStr
};

分析

时间复杂度:O(n^2),空间复杂度:O(n)

猜你喜欢

转载自www.cnblogs.com/zhoulixiangblog/p/12051425.html