leetcode-844-比较含退格的字符串

104 阅读1分钟

image.png leetcode原题

解题思路

  • 用栈的思想,每次往当前栈stack中推入当前字符,遇到#就从栈中删除掉最后一位元素;
  • 分别格式化st, 比较它们格式化后的结果是否一样;
  • 由于格式化的方法是一模一样的,所以我们抽离成一个公共方法,减少冗余代码。
/**
 * @param {string} s
 * @param {string} t
 * @return {boolean}
 */
var backspaceCompare = function(s, t) {
    return formatString(s) === formatString(t);
};

function formatString(str) {
    // 先遍历s字符串,遇到"#"删除一个元素
    let stack = [];

    const n = str.length;
    for (let i = 0; i < n; i++) {
        if (str[i] === "#") {
            stack.pop();
        } else {
             stack.push(str[i]);
        }
    }

    // 返回格式化后的字符串
    return stack.join("");
}