Problem Link

Description


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.

Solution


Python3

class Solution:
    def longestPalindrome(self, s: str) -> str:
        N = len(s)
 
        if N == 1: return s
 
        def pal(i, j):
            while i >= 0 and j < N and s[i] == s[j]:
                i -= 1
                j += 1
            
            i += 1
            j -= 1
            
            return s[i : j + 1]
        
        res = ""
        for i in range(N - 1):
            res = max(res, pal(i, i), pal(i, i + 1), key = len)
        
        return res