给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 ‘#’ 代表退格字符。
注意:如果对空文本输入退格字符,文本继续为空。
力扣原题链接
class Solution {
public:
bool backspaceCompare(string S, string T) {
int i = S.length() - 1, j = T.length() - 1;
int skipS = 0, skipT = 0;
while (i >= 0 || j >= 0) {
while (i >= 0) {//指针从后往前找
if (S[i] == '#') {
skipS++, i--;//继续前进遍历
}
else if (skipS > 0) {
skipS--, i--;//得到#的数目并用来跳过字母
}
else {
break;
}
}
while (j >= 0) {
if (T[j] == '#') {
skipT++, j--;
}
else if (skipT > 0) {
skipT--, j--;
}
else
break;
}
if (i >= 0 && j >= 0) {//此时i,j所指均是字母且无越界
if (S[i] != T[j])
return false;
}
else {
if (i >= 0 || j >= 0) {
return false;
}
}
i--, j--;
}
return true;
}
};