leetcode-5
https://leetcode.com/problems/longest-palindromic-substring/
1 | /** |
O(n2) 果然超时了
改进后:
这个方法跟Sliding Window方法类似,只是window的变化改为以s[i]为中心扩展伸缩。
Runtime: 100 ms, faster than 88.83% of JavaScript online submissions for Longest Palindromic Substring.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
27
28
29
30/**
* @param {string} s
* @return {string}
*/
const expandAroundCenter = (s, l, r) => {
while (l >=0 && r < s.length && s[l] === s[r]) {
l--;
r++;
}
return r - l - 1;
}
const longestPalindrome = (s) => {
if (s.length < 1) {
return "";
}
let start = 0,
end = 0;
for (let i = 0; i < s.length; i++) {
// console.log(s);
let len1 = expandAroundCenter(s, i, i);
let len2 = expandAroundCenter(s, i, i + 1);
let len = Math.max(len1, len2);
if (len > end - start) {
// console.log(i, len);
start = i - Math.floor((len - 1) / 2);
end = i + len / 2;
}
}
return s.substring(start, end + 1);
};