[路飞]_程序员必刷力扣题: 844. 比较含退格的字符串

273 阅读1分钟

844. 比较含退格的字符串

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

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

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

示例 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”。

提示:

  • 1 <= s.length, t.length <= 200
  • s 和 t 只含有小写字母以及字符 '#'

重构字符串

思路

按照题意我们将字符串中的#以及前面的字符除掉得到最终真正有效的字符串然后进行对比

写一个处理字符串的函数

  • 函数中声明一个新变量newStr用来保存新的字符串
  • 遍历字符串,遇到#的时候我们将newStr的最后以为截掉,遇到其它的则是正常字符串直接加在字符串末尾

用函数处理两个字符串进行比较

var backspaceCompare = function (s, t) {
    function dealStr(str) {
        var index = 0;
        var newStr = ''
        while (index < str.length) {
            var item = str[index];
            if (item === '#' && newStr.length > 0) {
                newStr = newStr.slice(0, newStr.length - 1)
            }
            if (item !== '#') {
                newStr += item
            }
            index++
        }
        return newStr
    }
    if (dealStr(s) === dealStr(t)) {
        return true
    }
    return false
};