比较含退格的字符串

给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true 。# 代表退格字符。
注意:如果对空文本输入退格字符,文本继续为空。

  • 输入:s = “ab#c”, t = “ad#c”

  • 输出:true
    解释:s 和 t 都会变成 “ac”。

  • 输入:s = “ab##”, t = “c#d#”

  • 输出:true
    解释:s 和 t 都会变成 “”。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
var backspaceCompare = function(S, T) {
let i = S.length - 1,
j = T.length - 1,
skipS = 0,
skipT = 0;
//双指针从右往左循环
while(i >= 0 || j >= 0){
while(i >= 0){//处理掉# 直到left指向的字符右边退格全部处理掉
if(S[i] === '#'){
skipS++;
i--;
}else if(skipS > 0){
skipS--;
i--;
}else break;
}
while(j >= 0){//处理掉# 直到right指向的字符右边退格全部处理掉
if(T[j] === '#'){
skipT++;
j--;
}else if(skipT > 0){
skipT--;
j--;
}else break;
}
if(S[i] !== T[j]) return false;//如果处理掉退格之后的字符串不相等,返回false
i--;//继续循环
j--;
}
return true;//如果循环过程中没返回false 最后就返回true
};