844. 比较含退格的字符串

力扣原题链接(点我直达)

给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。

示例 1:

输入:S = “ab#c”, T = “ad#c” 输出:true 解释:S 和 T 都会变成 “ac”。 示例 2:

输入:S = “ab##”, T = “c#d#” 输出:true 解释:S 和 T 都会变成 “”。 示例 3:

输入:S = “a##c”, T = “#a#c” 输出:true 解释:S 和 T 都会变成 “c”。 示例 4:

输入:S = “a#c”, T = “b” 输出:false 解释:S 会变成 “c”,但 T 仍然是 “b”。

提示:

1 <= S.length <= 200 1 <= T.length <= 200 S 和 T 只含有小写字母以及字符 ‘#’。

第一版,学1047题的string作为栈的方法

执行用时 :4 ms, 在所有 C++ 提交中击败了83.55%的用户

内存消耗 :8.5 MB, 在所有 C++ 提交中击败了82.47%的用户

bool backspaceCompare(string S, string T) {
    string sTemp = "", tTemp = "";
    for (auto s : S) {
        if (s == '#') {
            if (sTemp.size()>0)//注意判断条件
                sTemp.pop_back();
            else
                continue;
        }
        else
            sTemp += s;
    }
    for (auto t : T) {
        if (t == '#') {
            if (tTemp.size()>0)
                tTemp.pop_back();
            else
                continue;
        }
        else
            tTemp += t;
    }
    return sTemp == tTemp;
}