题目描述
给定 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 <= 200s和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
};