[LeetCode] 5. Longest Palindromic Substring

Chobby·2024년 8월 13일
1

LeetCode

목록 보기
42/194

중앙 확장법을 이용한 풀이이다.

주어진 인덱스로부터 확장하는 left와 right 값을 기준으로 펠린드롬을 비교하며 점차 확장해나가며 최대 길이의 펠린드롬을 찾게되는 구조이다,

function longestPalindrome(s: string): string {
    if (s.length < 2) return s;

    let start = 0;
    let maxLength = 1;

    function expandAroundCenter(left: number, right: number): void {
        while (left >= 0 && right < s.length && s[left] === s[right]) {
            const currentLength = right - left + 1;
            if (currentLength > maxLength) {
                start = left;
                maxLength = currentLength;
            }
            left--;
            right++;
        }
    }

    for (let i = 0; i < s.length; i++) {
        expandAroundCenter(i, i);     // 홀수 길이 팰린드롬
        expandAroundCenter(i, i + 1); // 짝수 길이 팰린드롬
    }

    return s.substring(start, start + maxLength);
}
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글