Leetcode Java Split Backspace String Compare

업데이트:

문제

Link

코드

class Solution {

  public boolean backspaceCompare(String s, String t) {
    int i = s.length() - 1;
    int j = t.length() - 1;
    int back = 0;
    while (true) {
      back = 0;
      while (i >= 0 && (back > 0 || s.charAt(i) == '#')) {
        back += s.charAt(i--) == '#' ? 1 : -1;
      }
      back = 0;
      while (j >= 0 && (back > 0 || t.charAt(j) == '#')) {
        back += t.charAt(j--) == '#' ? 1 : -1;
      }
      if (i >= 0 && j >= 0 && s.charAt(i) == t.charAt(j)) {
        i--;
        j--;
      } else {
        break;
      }
    }
    return i == -1 && j == -1;
  }

}

결과

Link

설명

  1. s와 t를 텍스트 편집기에 한 문자씩 입력할 때, 동일한 문자열이 되는지 검증하는 문제이다.
    • ’#’ 문자는 백스페이스를 의미하며 앞의 문자를 제거한다.
  2. i와 j는 s 문자와 t 문자의 위치를 마지막 위치를 저장한 변수이다.

  3. 아래의 반복을 종료하기 전까지 계속 반복한다.
    • back은 ‘#’의 개수를 저장하기 위한 변수로, i와 j를 뒤에서부터 #이 존재하는 개수만큼 앞의 문자를 차감하여 위치를 이동시킨다.
    • i와 j가 0보다 크거나 같으면서 i와 j가 동일하면 i와 j를 감소시키고, 아니면 반복을 그만한다.
  4. 검증된 문자열의 두 위치 변수인 i와 j가 -1인지 검증한 결과를 주어진 문제의 결과로 반환한다.

소스

Sample Code는 여기에서 확인 가능합니다.

댓글남기기