给定 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
只含有小写字母以及字符'#'
。
解析:
题目中看到退格要删除前一个元素,就要想到使用栈这种结构。另外还要注意栈是否为空的判断。题目中给了很多的示例,但是面试的过程中需要自己去想一些示例和特殊情况。
代码:
bool backspaceCompare(string S, string T)
{
stack<char>s;
stack<char>t;
for (auto c : S)
{
if (c != '#')
s.push(c);
else
{
if (!s.empty())//注意判断栈是否为空
s.pop();
}
}
for (auto c : T)
{
if (c != '#')
t.push(c);
else
{
if (!t.empty())
t.pop();
}
}
if (s.size() != t.size())
return false;
while (!s.empty()&&!t.empty())
{
if (s.top() != t.top())
return false;
s.pop();
t.pop();
}
return true;
}