Skip to main content

Longest Palindromic Substring

Problem statement

Given a string s, return the longest palindromic substring in s.

Example 1:

Input: s = "babad"Output: "bab"Explanation: "aba" is also a valid answer.

Example 2:

Input: s = "cbbd"Output: "bb"

Constraints:

  • 1 <= s.length <= 1000
  • s consist of only digits and English letters.

My solution

/**
* @param {string} s
* @return {string}
*/
var longestPalindrome = function(s) {
let start = 0;
let end = 0;

function parse(left, right) {
if (left > right || !s) {
return 0;
}

while (left >= 0 && right < s.length && s.charAt(left) === s.charAt(right)) {
left--
right++
}

return right - left - 1;
}


for (let i = 0; i < s.length; i++) {
const odd = parse(i, i);
const even = parse(i, i + 1)

const length = Math.max(odd, even);

if (length > end - start) {
start = Math.ceil(i - (length - 1)/2)
end = i + length/2
}
}

// console.log(start, end)

return s.substring(start, end + 1)
};