码迷,mamicode.com
首页 > 编程语言 > 详细

算法题-最长回文子串

时间:2019-12-16 22:10:57      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:amp   空间   ++   答案   lock   pre   function   block   复杂   

描述

给定一个字符串 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)

算法题-最长回文子串

标签:amp   空间   ++   答案   lock   pre   function   block   复杂   

原文地址:https://www.cnblogs.com/zhoulixiangblog/p/12051425.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!