125 - 5 最长回文子串
题目
解答
中心扩展
var longestPalindrome = function(s) {
if (!s || s.length < 1) {
return ""
}
let start = 0,
end = 0
for (let i = 0; i < s.length; i++) {
const len1 = palindromic(s, i, i)
const len2 = palindromic(s, i, i + 1)
const max = Math.max(len1, len2)
if (max > end - start) {
start = i - ~~((max - 1) / 2)
end = i + ~~(max / 2)
}
}
return s.slice(start, end + 1)
};
const palindromic = function(s, left, right) {
let L = left,
R = right
while (L >= 0 && R < s.length && s[L] === s[R]) {
L--
R++
}
return R - L - 1
}manacher

动态规划
Last updated