// @lc code=start
var longestPalindrome = function (s) {
// 判断是不是小于2,小于就直接返回原来的字符串
if (s.length < 2) {
return s
}
// 假如ab,长度刚好=2,最大的回文字符串长度就是1
let start = 0,
maxLength = 1
// 遍历,两种情况
// 1.bab
// 2.abba
for (let i = 0; i < s.length; i++) {
expandAroundCenter(i, i + 1)
expandAroundCenter(i - 1, i + 1)
}
function expandAroundCenter(left, right) {
//判断是不是在字符串的首尾并且两个字符相等
while (left >= 0 && right < s.length && s[left] === s[right]) {
if (right - left + 1 > maxLength) {
// right-left+1相当于aba,2-0+1=3,更新maxlength和start
maxLength = right - left + 1
start = left
}
left
right++
}
}
// 最终返回截取的回文字符串
return s.substring(start,start+maxLength)
}
// @lc code=end