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

145 阅读1分钟

题目描述

leetcode844. 比较含退格的字符串

给定 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”。

示例4:

输入: s = "a#c", t = "b"
输出: false
解释: s 会变成 “c”,但 t 仍然是 “b”。

提示:

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

JavaScript实现

/**
 * @param {string} s
 * @param {string} t
 * @return {boolean}
 */
 //想办法消除退格字符#
function transform(str, arr){
    for(var i = 0; i < str.length; i ++){
        if(str[i] == '#' && arr.length) arr.pop();
        else if(str[i] != '#') arr.push(str[i]);
    }
}
var backspaceCompare = function(s, t) {
    let arr1 = [], arr2 = [];
    transform(s, arr1);
    transform(t, arr2);
    //比较数组元素是否相等
    // if(arr1.length != arr2.length) return false;
    // while(arr1.length) {
    //     let l1 = arr1[arr1.length -1];
    //     let l2 = arr2[arr2.length -1];
    //     if(l1 != l2) return false;
    //     arr1.pop();
    //     arr2.pop();
    // }
    // return true
    // 或者 js 可以直接把数组转出字符串比较
    let str1 = arr1.join('')
    let str2 = arr2.join('')
    if(str1 == str2) return true;
    else return false
};