解题思路
- 用栈的思想,每次往当前栈
stack中推入当前字符,遇到#就从栈中删除掉最后一位元素; - 分别格式化
s和t, 比较它们格式化后的结果是否一样; - 由于格式化的方法是一模一样的,所以我们抽离成一个公共方法,减少冗余代码。
/**
* @param {string} s
* @param {string} t
* @return {boolean}
*/
var backspaceCompare = function(s, t) {
return formatString(s) === formatString(t);
};
function formatString(str) {
// 先遍历s字符串,遇到"#"删除一个元素
let stack = [];
const n = str.length;
for (let i = 0; i < n; i++) {
if (str[i] === "#") {
stack.pop();
} else {
stack.push(str[i]);
}
}
// 返回格式化后的字符串
return stack.join("");
}