https://leetcode-cn.com/problems/longest-palindromic-substring/
题目描述给你一个字符串 s,找到 s 中最长的回文子串。
示例 1:
输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。
示例 2:
输入:s = "cbbd"
输出:"bb"
提示:
1 <= s.length <= 1000
s 仅由数字和英文字母组成
思路
- 中心扩展法
从一个字符向其两端遍历,如果相同则指针左移和右移,直到左右不相等为止,计算字符长度。
- 字符串奇偶长度的处理
- 循环判断条件
- 语言支持:JavaScript
JavaScript Code:
/**
* @param {string} s
* @return {string}
*/
var longestPalindrome = function(s) {
let res = '';
for (let i = 0; i < s.length; i++) {
test(i, i); // 判断字串为奇数时
test(i, i + 1); // 判断子串为偶数时
}
function test(l, r) {
while (l >= 0 && r < s.length && s[l] == s[r]) {
l--;
r++;
}
if (r - l - 1 > res.length) {
res = s.slice(l + 1, r);
}
}
return res;
};
复杂度分析
令 n 为字符串长度。
- 时间复杂度: O ( n ² ) O(n²) O(n²)
- 空间复杂度: O ( 1 ) O(1) O(1)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)