- 最长回文子串
给你一个字符串 s,找到 s 中最长的回文子串。
示例 1:
输入:s = “babad”
输出:“bab”
解释:“aba” 同样是符合题意的答案。
示例 2:
输入:s = “cbbd”
输出:“bb”
提示:
1 <= s.length <= 1000
s 仅由数字和英文字母组成
动态规划解法
var longestPalindrome = function (s) {
let dp = Array.from({ length: s.length }, () =>
Array.from({ length: s.length }, () => false)
)
dp.forEach((ele, index) => {
dp[index][index] = true
})
let len = s.length
if (len < 2) {
return s
}
let maxLen = 1
let begin = 0
for (let j = 1; j <= len; j++) {
for (let i = 0; i < j; i++) {
if (s.charAt(i) !== s.charAt(j)) {
dp[i][j] = false
} else {
if (j - i < 3) {
dp[i][j] = true
} else {
dp[i][j] = dp[i + 1][j - 1]
}
}
if (dp[i][j] && j - i + 1 > maxLen) {
maxLen = j - i + 1
begin = i
}
}
}
return s.substring(begin, begin + maxLen)
}