给你一个字符串 s,找到 s 中最长的回文子串。
遍历 s,如果 s[i] 和它右侧的字符相同或者 s[i] 两侧的字符相同,那么向左右延伸。
/**
* @param {string} s
* @return {string}
*/
var longestPalindrome = function(s) {
if (s.length < 2) {
return s
}
var max = ''
var left = 0
var right = 0
for (var i = 0; i < s.length; i ++) {
// 如果 s[i] 和它右侧的字符相同
if (i + 1 < s.length && s[i] === s[i + 1]) {
left = i
right = i + 1
while (left >= 0 && right < s.length && s[left] === s[right]) {
left --
right ++
}
if (right - left - 1 > max.length) {
max = s.substring(left + 1, right)
}
}
// 如果 s[i] 两侧的字符相同
if (i - 1 >= 0 && i + 1 < s.length && s[i - 1] === s[i + 1]) {
left = i - 1
right = i + 1
while (left >= 0 && right < s.length && s[left] === s[right]) {
left --
right ++
}
if (right - left - 1 > max.length) {
max = s.substring(left + 1, right)
}
}
}
return max || s[0]
};