[LeetCode] Valid Palindrome II

아르당·2026년 2월 14일

LeetCode

목록 보기
149/213
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

문자열 s가 주어졌을 때, 문자열에서 최대 한 개의 문자를 삭제한 후에도 회문이 될 수 있다면 true를 반환해라.

Example

#1
Input: s = "aba"
Output: true

#2
Input: s = "abca"
Output: true
Explanation: 문자 c를 삭제할 수 있다.

#3
Input: s = "abc"
Output: false

Constraints

  • 1 <= s.length <= 10^5
  • s는 영문 소문자만로 구성한다.

Solved

class Solution {
    public boolean validPalindrome(String s) {
        int left = 0;
        int right = s.length() - 1;

        while(left < right){
            if(s.charAt(left) != s.charAt(right)){
                return isPalindrome(s, left + 1, right) || isPalindrome(s, left, right - 1);
            }

            left++;
            right--;
        }

        return true;
    }

    private boolean isPalindrome(String s, int left, int right){
        while(left < right){
            if(s.charAt(left) != s.charAt(right)) return false;

            left++;
            right--;
        }

        return true;
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글