leetcode 844 比较含退格的字符串
一、题目描述
二、解题思路
整体思路
可以使用字符串模拟栈来解决这个问题。本题方法与下面的一题完全一样,可以延伸练习一下。leetcode 1047 删除字符串中的所有相邻重复项-CSDN博客
具体思路
address函数用于还原并返回执行完所有退格操作的字符串。我们使用字符串ret来模拟栈结构。
循环遍历s:
(1)如果ret不为空且ch为‘#’,表示需要执行退格操作,我们将数组末尾的字符弹出;
(2)如果ch不为‘#’,就将字符串ch追加到ret的后面;
循环完成后,ret即为我们需要的字符串,返回ret即可。
三、代码实现
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;}
};