Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.
Example:
Input: "babad" Output: "bab" Note: "aba" is also a valid answer.
Example:
Input: "cbbd" Output: "bb"
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 31 32 33 34 35 36 37 38 39 40 41 42 43 | class Solution1: def longestPalindrome(self, s): "" " :type s: str :rtype: str "" " res = "" for i in range(len(s)): j = i + len(res) + 1 while j <= len(s): cur = s[i:j] if len(cur) > len(res) and cur == cur[::- 1 ]: res = cur j += 1 return res class Solution2: def longestPalindrome(self, s): if len(s) == 0 : return "" maxLen = 1 start = 0 for i in range(len(s)): cur = s[i - maxLen - 1 :i + 1 ] if i - maxLen >= 1 and cur == cur[::- 1 ]: start = i - maxLen - 1 maxLen += 2 continue cur = s[i - maxLen:i + 1 ] if i - maxLen >= 0 and cur == cur[::- 1 ]: start = i - maxLen maxLen += 1 return s[start:start + maxLen] s = "babad" #s = "cbbd" solution = Solution2() res = solution.longestPalindrome(s) # print(res) |