给你一个字符串 s,找到 s 中最长的回文子串。
示例 1:
输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。
示例 2:
输入:s = "cbbd"
输出:"bb"
示例 3:
输入:s = "a"
输出:"a"
示例 4:
输入:s = "ac"
输出:"a"
提示:
1 <= s.length <= 1000
s 仅由数字和英文字母(大写和/或小写)组成
来源:力扣(LeetCode)
解题:
// 双指针
let longestPalindrome = function (s) {
if(s.length < 2) {
return s
}
let maxLen = 1, start = 0
let findString = (l, r) => {
while(l>=0 && r<=s.length && s[l] === s[r]) {
if(r-l+1>maxLen) {
maxLen = r-l+1
start = l
}
l--;
r++
}
}
for(let i=0; i<s.length; i++) {
findString(i, i+1)
findString(i-1,i+1)
}
return s.substring(start, start+maxLen)
}