我的最新博客地址:我的最新博客
给定一个字符串 s
,找到 s
中最长的回文子串。你可以假设 s
的最大长度为 1000。
示例 1:
输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。
示例 2:
输入: "cbbd"
输出: "bb"
实现如下:
/**
* @param {string} s
* @return {string}
*/
var longestPalindrome = function(s) {
if (!s.length) return s
const palindromeArr = []
for (let i = 0; i < s.length; i++) {
let j = 0
let k = 0
while (s[i + j] && s[i - j] && s[i + j] === s[i - j]) {
j++
}
palindromeArr.push(s.slice(i + 1 - j, i + j))
while (s[i - k] && s[i + 1 + k] && s[i - k] === s[i + 1 + k]) {
k++
}
palindromeArr.push(s.slice(i + 1 - k, i + k + 1))
}
return palindromeArr.sort((a, b) => {
return b.length - a.length
})[0]
};
如有更好解法,欢迎留言探讨。