5. 最长回文子串]
给你一个字符串 s,找到 s 中最长的回文子串。
示例 1:
输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。
示例 2:
输入:s = "cbbd"
输出:"bb"
提示:
1 <= s.length <= 1000s仅由数字和英文字母组成
思想
代码实现
let longestPalindrome = function (s) {
//定义dp数组
let dp = new Array(s.length).fill(false).map(()=>new Array(s.length).fill(false))
let start = 0, max_len = 1
for (let i=0;i<s.length;i++) dp[i][i] = true
for(j=1;j<s.length;j++){
for(let i= 0;i<j;i++){
if(s[i]===s[j]){
if(j-i<3){
dp[i][j] = true
}else{
dp[i][j] = dp[i+1][j-1]
}
if(dp[i][j]&&j-i+1>max_len){
start = i
max_len = j-i+1
}
}
}
}
console.log(start,max_len)
return s.substr(start,max_len)
}