题目描述:
给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。
注意:如果对空文本输入退格字符,文本继续为空。
解题思路:
如果新开一个数组复杂度就不是O(1),我们从后开始解,设置四个变量i,j分别是数组s,t的最后一位,backS,backT分别记录数组s,t的退格符个数。
有三种情况:
1.如果当前所指向的字符是退格符,则记录当前退格符个数并且i向前移动一位。
2.如果当前所指向的字符是非退格符且当前退格符个数不为0,则退格符减一且i向前移动一位。
3.如果当前所指向的字符是非退格符且当前退格符个数为0,则退出循环等待数组t的同样操作直到s[i]===t[j]且i减一,j减一。
var backspaceCompare = function(s, t) {
let backT=0,backS=0;
let i=s.length-1, j=t.length-1
while(i>=0||j>=0){
while(i>=0){
if(s[i]==='#'){
backS++;
i--;
}else if(backS>0){
backS--;
i--;
}else{
break
}
}
while(j>=0){
if(t[j]==='#'){
backT++;
j--;
}else if(backT>0){
backT--;
j--;
}else{
break
}
}
if(s[i]!==t[j]){
return false
}
if((i<0&&j>=0)||(i>=0&&j<0)){
return false
}
i--;
j--;
}
return true
};