比较含退格的字符串

313 阅读1分钟

正题

比较含退格的字符串

给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,请你判断二者是否相等。# 代表退格字符。

如果相等,返回 true ;否则,返回 false 。

注意: 如果对空文本输入退格字符,文本继续为空。

示例 1:

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

过于简单,可以直接采用堆的方式实现:

/**
 * @param {string} s
 * @param {string} t
 * @return {boolean}
 */

var f = function (s) {
    let res = []
    for (let index = 0 ; index < s.length; index++) {
        if (s[index] === '#') {
            res.pop()
        } else {
            res.push(s[index])
        }
    }
    return res.join('')
}
var backspaceCompare = function(s, t) {
    return  f(s) === f(t)
};

原理: 字符串相当于一个堆,字符相当于堆中的元素,以这样的模型去遍历字符串中的字符,如果是字符那就push,如果是退格那就执行 pop