😎풀이

  1. isPalindrome: 투 포인터를 설정하여 팰린드롬 여부 확인
  2. validPalindrome: 최대 한 개 까지의 단어를 제거하고 팰린드롬 여부 확인
    2-1. 투 포인터로 순회하며 현재 비교 문자가 다르다면, 왼쪽 글자와 오른쪽 글자를 각각 제거하여 팰린드롬 여부 확인하고 해당 결과 반환
function validPalindrome(s: string): boolean {
    let left = 0
    let right = s.length - 1
    while(left < right) {
        if(s[left] !== s[right]) {
            const skipLeftIsPalindrome = isPalindrome(s.slice(left + 1, right + 1))
            const skipRightIsPalindrome = isPalindrome(s.slice(left, right))
            return skipLeftIsPalindrome || skipRightIsPalindrome
        }
        left++
        right--
    }
    return true
};

function isPalindrome(s: string) {
    let left = 0
    let right = s.length - 1
    while(left < right) {
        if(s[left] !== s[right]) return false
        left++
        right--
    }
    return true
}
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글