# 回文
# 5.最长回文子串
中等
给你一个字符串 s,找到 s 中最长的回文子串。详细 (opens new window)
/**
* @param {string} s
* @return {string}
*/
var longestPalindrome = function(s) {
const n = s.length;
const dp = new Array(n).fill(0).map(() => new Array(n).fill(false));
let ans = '';
for (let l = 0; l < n; ++l) {
for (let i = 0; i+l < n; ++i) {
let j = i + l;
if (l == 0) {
dp[i][j] = true;
} else if (l == 1) {
dp[i][j] = (s.charAt(i) == s.charAt(j));
} else {
dp[i][j] = (s.charAt(i) == s.charAt(j) && dp[i+1][j-1]);
}
if (dp[i][j] && l+1 > ans.length) {
ans = s.substring(i, i + l + 1);
}
}
}
return ans;
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26