给定 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;
}
};

该博客探讨了一种特殊的字符串比较问题,其中涉及到退格字符'#'。在给定的C++代码中,实现了一个名为`backspaceCompare`的函数,用于比较两个字符串S和T在考虑退格操作后的实际内容是否相同。该函数通过双指针从后向前遍历,模拟退格过程,最终判断字符串是否相等。这是一个涉及字符串处理和逻辑思维的编程挑战。
477

被折叠的 条评论
为什么被折叠?



