Leetcode Java Split Backspace String Compare
업데이트:
문제
코드
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;
}
}
결과
설명
- s와 t를 텍스트 편집기에 한 문자씩 입력할 때, 동일한 문자열이 되는지 검증하는 문제이다.
- ’#’ 문자는 백스페이스를 의미하며 앞의 문자를 제거한다.
-
i와 j는 s 문자와 t 문자의 위치를 마지막 위치를 저장한 변수이다.
- 아래의 반복을 종료하기 전까지 계속 반복한다.
- back은 ‘#’의 개수를 저장하기 위한 변수로, i와 j를 뒤에서부터 #이 존재하는 개수만큼 앞의 문자를 차감하여 위치를 이동시킨다.
- i와 j가 0보다 크거나 같으면서 i와 j가 동일하면 i와 j를 감소시키고, 아니면 반복을 그만한다.
- 검증된 문자열의 두 위치 변수인 i와 j가 -1인지 검증한 결과를 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기