[leetcode] 가장 긴 팰린드롬 부분 문자열

김민서·2024년 1월 5일
0

알고리즘 문제풀이

목록 보기
11/47

링크텍스트
처음에 쓰리포인터를 활용해서 문제를 풀었는데 기본 주어진 테스트 케이스는 통과했지만 나머지 테스트 케이스에서 통과하지 못했다. 근데 그 실패한 코드를 짜는 데에도 엄청 오래 걸렸다.

아무튼 나에게 어려운 문제라고 느껴져서 다른 분들이 풀어놓은 정답 코드를 참고하여 정리한다.

s = "babad"

# 양옆으로 퍼져가면서 두 수가 같은지를 확인하여 sub string(팰린드롬)을 반환한다.
def expend(str, left, right):
	while left >= 0 and right < len(str) and str[left] == str[right]:
    	left -= 1
        right += 1
    return s[left+1:right]

max_palindrom = ""
for i in range(len(s)):
	sub = expend(s, i, i)		# 홀수 팰린드롬
    if len(sub) >= len(max_palindrom):	
    	max_palindrom = sub
    
    sub = expend(s, i, i+1)		# 짝수 팰린드롬
    if len(sub) > len(max_palindrom):
    	max_palindrom = sub
    
print(max_palindrom)

이해하기도 쉽고 가독성도 좋은 코드이다.

0개의 댓글