一、题目描述

二、解题思路
整体思路
可以使用字符串模拟栈来解决这个问题。本题方法与下面的一题完全一样,可以延伸练习一下。leetcode 1047 删除字符串中的所有相邻重复项-CSDN博客
具体思路
address函数用于还原并返回执行完所有退格操作的字符串。我们使用字符串ret来模拟栈结构。
循环遍历s:
(1)如果ret不为空且ch为'#',表示需要执行退格操作,我们将数组末尾的字符弹出;
(2)如果ch不为'#',就将字符串ch追加到ret的后面;
循环完成后,ret即为我们需要的字符串,返回ret即可。
三、代码实现
cpp
class Solution {
public:
bool backspaceCompare(string s, string t) {
return address(s)==address(t);
}
string address(string s){
string ret;
for(auto ch:s){
if(!ret.empty()&&ch=='#') ret.pop_back();
else if(ch!='#') ret.push_back(ch);
}
return ret;
}
};