给定 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;
}
本文介绍了一种使用栈来处理带有退格字符的字符串比较方法。通过遍历字符串并利用栈结构实现退格功能,最终比较两个经过处理的字符串是否相等。
290

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



