24-leetCode: 844. 比较含退格的字符串

71 阅读1分钟

题目

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

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

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

示例

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

解题思路

将两个字符串分别处理,设定一个方法,此方法接收一个字符串,定义一个队列,遍历字符串,如果是字符串则push进队列,如果是#号则pop一个字符串,最后返回数组连接成的字符串;最后对比两个字符串是否相等

/**
 * @param {string} s
 * @param {string} t
 * @return {boolean}
 */
var backspaceCompare = function(s, t) {
    // 定义对比函数,获取需要对比的结果字符串
    const compare = (str) => {
        const result = [];
        let l = str.length;
        // 个人比较喜欢使用数组的一些方法,所以将字符串转为数组,更易操作
        str.split('').forEach(item => {
          item === '#' ? result.pop() : result.push(item);
        })
        return result.join('');
    }
    // 返回结果
    return compare(s) === compare(t);
};