算法题-最长回文子串
Posted zhoulixiangblog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法题-最长回文子串相关的知识,希望对你有一定的参考价值。
描述
给定一个字符串 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)
以上是关于算法题-最长回文子串的主要内容,如果未能解决你的问题,请参考以下文章