力扣刷题:20-比较含退格的字符串(844)

129 阅读1分钟

本题比较字符串相等,但是其中有退格键干扰,所以先使用栈处理掉退格键,再依次比较每一位字符是否相等,从而判断字符串是否相等。

下面是C++实现的代码:

class Solution {
public:
    bool backspaceCompare(string s, string t) {
        stack<char> s1, s2;
        str2stack(&s1, &s);
        str2stack(&s2, &t);

        if (s1.size() != s2.size()) {
            return false;
        }
        while (s1.size() > 0 && s1.top() == s2.top()) {
            s1.pop();
            s2.pop();
        }
        return s1.size() == 0;
    }
    void str2stack(stack<char> *s, string *t) {
        for (auto i : *t) {
            if (i == '#') {
                if (s->size() > 0) {
                    s->pop();
                }
            } else {
                s->push(i);
            }
        }
    }
};