https://school.programmers.co.kr/learn/courses/30/lessons/12904
앞뒤를 뒤집어도 똑같은 문자열을 팰린드롬(palindrome)이라고 합니다.
문자열 s가 주어질 때, s의 부분문자열(Substring)중 가장 긴 팰린드롬의 길이를 return 하는 solution 함수를 완성해 주세요.
예를들면, 문자열 s가 "abcdcba"이면 7을 return하고 "abacde"이면 3을 return합니다.
비교 문자열의 길이가 홀수, 짝수를 구분해야 합니다.
"abba"의 경우 bb를 비교하고 aa를 비교하지만, "aba"는 aa를 비교해 값을 찾아냅니다.
def pan(s, i):
# 홀수
answer1 = 1
d1 = 1
while (d1<=min(i, len(s)-i-1)):
if s[i-d1] != s[i+d1]: # 홀수
break
else :
answer1 += 2
d1 += 1
# 짝수
answer2 = 0
d2 = 1
while (d2 <= min(i+1, len(s)-i-1)):
if s[i-d2+1] != s[i+d2]: # 짝수
break
else :
answer2 += 2
d2 += 1
return max(answer1, answer2)
def solution(s):
if len(s) == 1:
return 1
answer = 1
for i in range(len(s)):
answer = max(answer, pan(s, i))
return answer