[路飞]比较含退格的字符串

198 阅读1分钟

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

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

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

点击进入力扣做题

1. 解题思路

这题主要的在于怎么处理字符串中的退格字符得到最终的字符串,然后再比对两个字符串即可。可以利用数组处理即可。

  • 首先,遍历字符串。
  • 判断当前字符串是否是#。
  • 如果不是将当前字符串加入到数组。
  • 如果是删除当前数组的最后一项。

image.png

2. 实现代码

/**
 * @param {string} s
 * @param {string} t
 * @return {boolean}
 */
var backspaceCompare = function(s, t) {
    s = backspaceString(s);
    t = backspaceString(t);
    return s === t;
};

var backspaceString = function(s) {
    const arr = [];
    const len = s.length;
    for(let i = 0; i < len; i++) {
        if (s[i] === '#') {
            arr.splice(arr.length - 1, 1);
        } else {
            arr.push(s[i]);
        }
    }
    return arr.join('');
}