You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
734 B
41 lines
734 B
3 years ago
|
/**
|
||
|
* @param {string} s
|
||
|
* @return {string}
|
||
|
*/
|
||
|
var longestPalindrome = function(s) {
|
||
|
if (s === null || s.length < 1){
|
||
|
return "";
|
||
|
}
|
||
|
|
||
|
if (s.length === 1){
|
||
|
return s;
|
||
|
}
|
||
|
|
||
|
let start = 0;
|
||
|
let end = 0;
|
||
|
|
||
|
for (let i = 0; i < s.length; i++){
|
||
|
let len1 = expandAroundCenter(s, i, i);
|
||
|
let len2 = expandAroundCenter(s, i, i + 1);
|
||
|
let len = Math.max(len1, len2);
|
||
|
if (len > end - start) {
|
||
|
start = Math.round(i - (len - 1) / 2);
|
||
|
end = i + len / 2;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return s.substring(start, end+1)
|
||
|
};
|
||
|
|
||
|
function expandAroundCenter(s, left, right) {
|
||
|
let L = left;
|
||
|
let R = right;
|
||
|
|
||
|
while (L >= 0 && R < s.length && s.charAt(L) === s.charAt(R)){
|
||
|
L--;
|
||
|
R++;
|
||
|
}
|
||
|
|
||
|
return R - L - 1;
|
||
|
}
|