5. Longest Palindromic Substring

최기환·2023년 3월 2일
0

Longest Palindromic Substring

거꾸로 해도 똑같은 즉 회문의 서브 스트링을 찾는 문제이다.

접근법


중간 난이도였으며, 투포인터를 통해 접근했다.

풀이

/**
 * @param {string} s
 * @return {string}
 */
var longestPalindrome = function(s) {
    // twopointer
    const checking = (left, right, s) => {
        while(left <= right) {
            if (s[left] != s[right]) {
                return false;
            }
            left++;
            right--;
        }
        return true;
    }
    let max_length = 0;
    let max_L = 0;
    let max_R = 0;
    for (let i = 0; i < s.length; i++) {
        for (let j = i; j < s.length; j++) {
            if (s[i] == s[j] && j - i + 1 > max_length) {
                if (checking(i, j, s)) {
                    max_length = j - i + 1;
                    max_L = i;
                    max_R = j;
                }
            }
        }
    }
    return s.slice(max_L, max_R + 1);
};

요약

쉬웠던 문제라고 생각한다. 문자열의 i인덱스부터 시작해서 i이후에 같은 문자가 등장하는지 확인한 후 이 i부터j까지의 부분문자열이 회문인지 확인한다. 이후 회문이라면 left와 right를 저장하고 그 길이 또한 저장한다. 그 이후부터는 이미 확인한 회문의 길이보다 길지 않다면 갱신하지않고 그보다 길다면 다시 회문 확인을하는 방식을 반복하여 가장 긴 회문을 찾는다.

profile
프론트엔드 개발자를 꿈꾸는 취준생(백수) 입니다!

0개의 댓글