5. Longest Palindromic Substring
https://leetcode.com/problems/longest-palindromic-substring/
solution
双指针
class Solution:
def longestPalindrome(self, s: str) -> str:
longest = 0
l = r = 0
for i in range(len(s)):
length, left ,right = self.pali(s, i, i) # 这个写法有点繁杂,只需要返回一个子串,然后选择最长的即可
if length > longest:
longest = length
l = left
r = right
length, left, right = self.pali(s, i, i+1)
if length > longest:
longest = length
l = left
r = right
return s[l:r+1]
def pali(self, s, l, r):
temp_length = 0
while l >=0 and r < len(s) and s[l] == s[r]:
if l == r:
temp_length += 1
else:
temp_length += 2
l -= 1
r += 1
return temp_length, l+1, r-1时间复杂度:O() 空间复杂度:O()
动态规划
follow up-回文类
516. Longest Palindromic Subsequence
时间复杂度:O(n^2) 空间复杂度:O(n^2)
132. Palindrome Partitioning II
2193. Minimum Number of Moves to Make Palindrome
时间复杂度:O(n) 空间复杂度:O(1)
超时
Previous209. Minimum Size Subarray SumNext395. Longest Substring with At Least K Repeating Characters
Last updated