파이썬 알고리즘 인터뷰 문제 6번(리트코드 5번) Longest Palindromic Substring
https://leetcode.com/problems/longest-palindromic-substring/
class Solution:
def longestPalindrome(self, s: str) -> str:
if len(s) < 2:
return s
result = ""
for mid in range(len(s) - 1):
if s[mid] == s[mid + 1]:
left, right = mid, mid + 1
while s[left] == s[right]:
temp = s[left:right + 1]
if len(temp) > len(result):
result = temp
left -= 1
right += 1
if left < 0 or right >= len(s):
break
left = right = mid
while s[left] == s[right]:
temp = s[left:right + 1]
if len(temp) > len(result):
result = temp
left -= 1
right += 1
if left < 0 or right >= len(s):
break
return result
class Solution:
def longestPalindrome(self, s: str) -> str:
if len(s) < 2 or s == s[::-1]:
return s
def expand(left, right):
while left >= 0 and right < len(s) and s[left] == s[right]:
left -= 1
right += 1
return s[left + 1:right]
result = ''
for mid in range(len(s)):
result = max(result, expand(mid, mid), expand(mid, mid + 1), key = len)
return result
cccclass Solution:
def longestPalindrome(self, s: str) -> str:
if len(s) < 2:
return s
result = ""
for mid in range(len(s) - 1):
if s[mid] == s[mid + 1]: #ccc는 홀수개인데 이 경우로 들어가서 틀림
left, right = mid, mid + 1
else:
left = right = mid
while s[left] == s[right]:
temp = s[left:right + 1]
if len(temp) > len(result):
result = temp
left -= 1
right += 1
if left < 0 or right >= len(s):
break
return result
#홀수, 짝수인 경우를 먼저 나누어야함.