[Q. 06] 가장 긴 팰린드롬 부분 문자열

2023. 3. 16. 18:26·코딩테스트/알고리즘
가장 긴 팰린드롬 부분 문자열을 출력하라.

 

팰린드롬을 확인할 문자열은 짝수 길이의 문자열, 홀수 길이의 문자열 2가지 종류가 있다.

그 전에 먼저 문자열에서 가장 긴 팰린드롬 문자열을 뽑는 함수를 만든다.

def expand(left: int, right: int, s: str) -> str:
    while left >= 0 and right < len(s) and s[left] == s[right]:
        left -= 1
        right += 1

    return s[left+1:right]

 

left와 right를 좌우로 한칸씩 늘려가며 확인한다. 만약 처음부터 while 조건에 맞지 않는다면, s[left+1:right]를 return 한다.

그리고 문자열 처음부터 2칸, 3칸 문자로 잘라서 expand함수로 가장 큰 길이의 팰린드롬 문자열을 찾는다. 그리고 그 결과들과 기존에 있던 결과 중 가장 긴 결과를 찾는다.

answer = ''

if len(s) == 0 or len(s) == 1:
    return s

for i in range(len(s)-1):
    answer = max(answer, expand(i, i+1, s), expand(i, i+2, s), key=len)

 

전체 코드는 다음과 같다.

class Solution:
    def longestPalindrome(self, s: str) -> str:
        def expand(left: int, right: int, s: str) -> str:
            while left >= 0 and right < len(s) and s[left] == s[right]:
                left -= 1
                right += 1

            return s[left+1:right]

        answer = ''

        if len(s) == 0 or len(s) == 1:
            return s

        for i in range(len(s)-1):
            answer = max(answer, expand(i, i+1, s), expand(i, i+2, s), key=len)
            
        return answer
저작자표시 비영리 변경금지 (새창열림)

'코딩테스트 > 알고리즘' 카테고리의 다른 글

[Q. 08] 빗물 트래핑  (0) 2023.03.20
[Q. 07] 두 수의 합  (0) 2023.03.20
[Q. 05] 그룹 애너그램  (0) 2023.03.16
[Q. 04] 가장 흔한 단어  (0) 2023.03.15
[Q. 03] 로그 파일 재정렬  (0) 2023.03.15
'코딩테스트/알고리즘' 카테고리의 다른 글
  • [Q. 08] 빗물 트래핑
  • [Q. 07] 두 수의 합
  • [Q. 05] 그룹 애너그램
  • [Q. 04] 가장 흔한 단어
뚝딱뚝딱2
뚝딱뚝딱2
  • 뚝딱뚝딱2
    개발도상국
    뚝딱뚝딱2
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 공부
        • Java
        • Spring Boot
        • LORA
      • Web
        • 인스타 클론 코딩
        • GPT 응답 API 서버
        • Spring Boot 예외 처리
        • 코테 준비용 서비스 만들기
      • DevOps
        • 쿠버네티스
        • 서버 만들기
      • 코딩테스트
        • 알고리즘
      • 교육
        • 스파르타코딩클럽 - 내일배움단
        • 혼자 공부하는 컴퓨터 구조 운영체제
      • 잡다한것
  • 블로그 메뉴

    • 홈
  • 링크

    • GITHUB
  • 공지사항

  • 인기 글

  • 태그

    스프링부트
    클론코딩
    스프링 부트
    react
    티스토리챌린지
    OpenAI API
    인스타그램
    chat GPT
    예외
    클러스터
    쿠버네티스
    mapstruct
    리액트
    Java
    MSA
    spring boot
    백준
    오블완
    REST API
    Entity
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
뚝딱뚝딱2
[Q. 06] 가장 긴 팰린드롬 부분 문자열
상단으로

티스토리툴바