[LeetCode] Backspace String Compare

아르당·2026년 3월 3일

LeetCode

목록 보기
181/213
post-thumbnail

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

Problem

두개의 문자열 s와 t가 주어졌을 때, 두 텍스트를 빈 텍스트 편집기에 입력했을 때 같으면 true를 반환해라. '#'은 백스페이스 문자를 의미한다.

Example

#1
Input: s = "ab#c", t = "ad#c"
Output: true
Explanation: s와 t 둘 다 "ac"가 된다.

#2
Input: s = "ab##", t = "c#d#"
Output: true
Explanation: s와 t 둘 다 ""이 된다.

#3
Input: s = "a#c", t = "b"
Output: false
Explanation: s는 "c"로 t는 "b"가 된다.

Constraints

  • 1 <= s.length, t.length <= 200
  • s와 t는 소문자와 '#'만 포함한다.

Solved

class Solution {
    public boolean backspaceCompare(String s, String t) {
        int sl = s.length() - 1;
        int tl = t.length() - 1;

        while(sl >= 0 || tl >= 0){
            sl = getNextIndex(s, sl);
            tl = getNextIndex(t, tl);

            if(sl < 0 && tl < 0){
                return true;
            }

            if(sl < 0 || tl < 0){
                return false;
            }else if(s.charAt(sl) != t.charAt(tl)){
                return false;
            }

            sl--;
            tl--;
        }

        return true;
    }

    private int getNextIndex(String s, int e){
        int backspaceCount = 0;

        while(e >= 0){
            if(s.charAt(e) == '#'){
                backspaceCount++;
            }else if(backspaceCount > 0){
                backspaceCount--;
            }else{
                break;
            }

            e--;
        }

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

0개의 댓글