- Published on
[LeetCode 5] Longest Palindromic Substring
Problem
Given a string s, return the longest palindromic substring in s.
Example 1:
Input: s = "babad"
Output: "bab"
Note: "aba" is also a valid answer.
Example 2:
Input: s = "cbbd"
Output: "bb"
Example 3:
Input: s = "a"
Output: "a"
Example 4:
Input: s = "ac"
Output: "a"
Constraints:
1 <= s.length <= 1000sconsist of only digits and English letters.
Thoughts
- We can check for palindromic substring from center, and move to left & right
- We need handle even and odd case
Code
function longestPalindrome(s: string): string {
let res = ""
let resLen = 0
for(let i = 0; i < s.length; i++) {
// odd palindrome case
let l = i, r = i
while (l >= 0 && r < s.length && s[l] === s[r]) {
if(r - l + 1 > resLen) {
res = s.substring(l, r + 1)
resLen = r - l + 1
}
l -= 1
r += 1
}
// even case
l = i, r = i + 1
while (l >= 0 && r < s.length && s[l] === s[r]) {
if(r - l + 1 > resLen) {
res = s.substring(l, r + 1)
resLen = r - l + 1
}
l -= 1
r += 1
}
}
return res
};