给定 S
和 T
两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 #
代表退格字符。
这个题目主要是在于栈的应用,若当前字母为'#'则将栈顶元素出栈,否则将当前字母入栈。第一次碰见不会写正常,希望下次能顺利解决类似的题目。leetcode上似乎只需要给出 backspaceCompare函数的代码,若多此一举则会报错。
#include <iostream>
#include <string>
#include <stack>
using namespace std;
bool backspaceCompare(string S, string T)
{
int len1 = S.size();
int len2 = T.size();
string s1, t1;
stack<char> stk;
for (int i = 0;i < len1;i++)
{
if (S[i] != '#')
{
stk.push(S[i]);
}
else
{
if (!stk.empty())
{
stk.pop();
}
}
}
while (!stk.empty())
{
s1 += stk.top();
stk.pop();
}
for (int i = 0;i < len2;i++)
{
if (T[i] != '#')
{
stk.push(T[i]);
}
else
{
if (!stk.empty())
{
stk.pop();
}
}
}
while (!stk.empty())
{
t1 += stk.top();
stk.pop();
}
return s1 == t1 ? true : false;
}
int main()
{
string S, T;
cin >> S >> T;
if (backspaceCompare(S, T))
{
cout << "true" << endl;
}
else
{
cout << "false" << endl;
}
return 0;
}