解法:用栈来模拟
思路:不用真的定义一个栈,用字符串string来模拟栈的行为
入栈:s[i] != '#'时 push_back(s[i]) 出栈:s[i] == '#' 的时候,并且s.size() > 0,pop_back(s[i])循环结束得到结果
注意:如果真的用stack<char>来模拟的话,最后赋值给string后,需要reverse逆序。
细节:因为这题两个结构都是string,且都需要相同逻辑判断,所以单独封装个函数,减少代码量。
class Solution
{
public:bool backspaceCompare(string s, string t) {return ischange(s) == ischange(t);}string ischange(string s){string ret;for(auto& e : s){if(ret.size() && e == '#')ret.pop_back();else if(e != '#') ret += e;}return ret;}
};