844. 比较含退格的字符串
给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。
注意:如果对空文本输入退格字符,文本继续为空。
public boolean backspaceCompare(String S, String T) {
// 既然是退格,就从后往前找
for(int i = S.length() - 1, posT = T.length() - 1; i >= 0 || posT >= 0; i--, posT--){
i = nextCharPos(i, S);
posT = nextCharPos(posT, T);
// 如果字符都空了,则表示相同
if(i < 0 && posT < 0){
return true;
}else if(i >= 0 && posT >= 0){
// 倒着比较每个字符
if(S.charAt(i) != T.charAt(posT)){
return false;
}
}else{
// 有的字符串还有字符,而另一个没了,则表示不同
return false;
}
}
return true;
}
// 倒着找到第一个真正用于比较的字符
private int nextCharPos(int i, String S){
while(i >= 0 && S.charAt(i) == '#'){
i = nextCharPos(i - 1, S) - 1;
}
return i;
}