给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。
示例 1:
输入:S = "ab#c", T = "ad#c"
输出:true
解释:S 和 T 都会变成 “ac”。
示例 2:
输入:S = "ab##", T = "c#d#"
输出:true
解释:S 和 T 都会变成 “”。
示例 3:
输入:S = "a##c", T = "#a#c"
输出:true
解释:S 和 T 都会变成 “c”。
示例 4:
输入:S = "a#c", T = "b"
输出:false
解释:S 会变成 “c”,但 T 仍然是 “b”。
提示:
1 <= S.length <= 200
1 <= T.length <= 200
S 和 T 只含有小写字母以及字符 ‘#’。
题解思路
可以用栈的思想,当遇到#
的时候就pop,不是的时候就push。但是要注意在当栈为空的时候是不用退格的。
class Solution {
public:
bool backspaceCompare(string S, string T) {
stack<char> stack_s, stack_t;
for(auto ch: S)
{
if(ch == '#')
{
if(stack_s.empty())
continue;
stack_s.pop();
continue;
}
stack_s.push(ch);
}
for(auto ch: T)
{
if(ch == '#')
{
if(stack_t.empty())
continue;
stack_t.pop();
continue;
}
stack_t.push(ch);
}
if(stack_s != stack_t)
return false;
return true;
}
};
执行用时 : 8 ms, 在Backspace String Compare的C++提交中击败了96.24% 的用户
内存消耗 : 8.7 MB, 在Backspace String Compare的C++提交中击败了77.69% 的用户