문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
두개의 문자열 s와 t가 주어졌을 때, 두 텍스트를 빈 텍스트 편집기에 입력했을 때 같으면 true를 반환해라. '#'은 백스페이스 문자를 의미한다.
#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"가 된다.
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;
}
}