力扣-最长回文子串
给你一个字符串 s
,找到 s
中最长的 回文 子串。
示例 1:
输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。
示例 2:
输入:s = "cbbd" 输出:"bb"
提示:
1 <= s.length <= 1000
s
仅由数字和英文字母组成
实现代码:
/*** @param {string} s* @return {string}*/
var longestPalindrome = function(s){const n = s.length;if (n < 2) return s;const dp = new Array(n).fill(false).map(() => new Array(n).fill(false));let maxLen = 1;let begin = 0;for (let i = 0; i < n; i++) {dp[i][i] = true;}for (let L = 2; L <= n; L++) {for (let i = 0; i < n; i++) {const j = i + L - 1;if (j >= n) break;if (s[i] !== s[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] && L > maxLen) {maxLen = L;begin = i;}}}return s.substring(begin, begin + maxLen);
};