用JavaScript写力扣的5. 最长回文子串
时间: 2024-04-14 09:27:00 浏览: 58
你可以使用动态规划来解决这个问题。下面是用 JavaScript 编写的解决方案:
```javascript
function longestPalindrome(s) {
const n = s.length;
const dp = Array.from(Array(n), () => Array(n).fill(false));
let start = 0, maxLen = 1;
// 单个字符一定是回文串
for (let i = 0; i < n; i++) {
dp[i][i] = true;
}
// 判断长度为2的子串是否为回文串
for (let i = 0; i < n - 1; i++) {
if (s[i] === s[i + 1]) {
dp[i][i + 1] = true;
start = i;
maxLen = 2;
}
}
// 判断长度大于2的子串是否为回文串
for (let len = 3; len <= n; len++) {
for (let i = 0; i < n - len + 1; i++) {
const j = i + len - 1;
if (s[i] === s[j] && dp[i + 1][j - 1]) {
dp[i][j] = true;
start = i;
maxLen = len;
}
}
}
return s.substring(start, start + maxLen);
}
// 示例输入: "babad"
console.log(longestPalindrome("babad")); // 输出: "bab"
```
此解决方案使用动态规划来查找最长回文子串。它遍历字符串并填充一个二维数组 `dp`,其中 `dp[i][j]` 表示从索引 `i` 到索引 `j` 的子串是否为回文串。然后,我们可以根据 `dp` 数组找到最长回文子串的起始索引和长度,并使用 `substring` 方法提取出最长回文子串。
注意:这只是其中一种解决方法,还有其他的解决方法可以用来解决这个问题。
阅读全文