- Date : 2021.01.23(토)
- Time : 40분
- 앞뒤를 뒤집어도 똑같은 문자열을 팰린드롬(palindrome)이라고 합니다. 문자열 s가 주어질 때, s의 부분문자열(Substring)중 가장 긴 팰린드롬의 길이를 return 하는 solution 함수를 완성해 주세요. 예를들면, 문자열 s가 abcdcba이면 7을 return하고 abacde이면 3을 return합니다.
for i in range(len(s) - 1):
for j in range(i + 2, len(s) + 1):
origin = s[i: j]
if origin == origin[::-1]:
answer.append(len(origin))
return max(answer)
: 처음 for문은 시작점을 잡는 용도이다. 그래서 끝을 남겨둔다(시작점이 끝이 될 수는 없기 때문에). 두번째 for문은 끝점을 잡는 용도이다. i보다 +1로 시작해야하는데 +2한 이유는 문자열 슬라이스를 할 때 s[i:j]를 하면 j는 포함되지 않고 i ~ j-1까지 슬라이싱이 되기때문에 +2를 해준 이유이다. 그래서 시작점부터 +1~끝 까지 슬라이싱을 하면서 뒤집었을 때 문자열이 같다면 answer에 저장을 해둔다. 그리고 마지막에 answer에서 가장 긴 팰린드롬의 길이를 max로 찾아서 return 한다.
if len(s) == 1:
return 1
if len(answer) == 0:
return 1
: 만약 애초에 들어온 문자열의 길이가 1이라면 바로 1을 출력해주고, 팰린드롬이 없어도 1을 출력해준다.