一、题目:
844、比较含退格的字符串
给定 S
和 T
两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 #
代表退格字符。
示例 1:
输入:S = "ab#c", T = "ad#c" 输出:true 解释:S 和 T 都会变成 “ac”。
二、思路:
将S和T分别存入一个栈,碰到“#”就执行一次出栈操作;比较两个栈是否相等
三、代码(C++):
bool backspaceCompare(string S, string T) {
stack<char> s,t; //新建两个栈
for(auto s1:S) //把字符串S入栈
{
if(s1=='#')
{
if(s.size())
s.pop();
}
else
s.push(s1);
}
for(auto t1:T) //把字符串T入栈
{
if(t1=='#')
{
if(t.size())
t.pop();
}
else
t.push(t1);
}
if(s.size()!=t.size())
return false;
int j=s.size();
for(int i=0;i!=j;i++) //比较两个栈是否相等
{
char a=s.top();
char b=t.top();
if(a!=b)
return false;
else
{
s.pop();
t.pop();
}
}
return true;
}
四、扩展:
当把调用对象size()函数作为判断条件时,警惕size()大小会不会发生变化