前言
today来模拟下键盘的的操作过程,当然我们只是简单的模拟下退格键,纯输入文本字符串而已,当然,要利用一下栈的数据结构来处理,话不多说,进正题。
题目描述
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 都会变成 “”。
来源:力扣(LeetCode) 链接:leetcode-cn.com/problems/ba… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路
用栈做个字符编辑器,分别输入两个给定字符串看结果是否相等即可- 遇到非退格键输入的时候直接执行入栈操作,如果
是退格键那么还要判断当前栈是否为空,如果是空不执行任何操作,不为空就pop栈顶元素即可。
开始解题
/**
* @param {string} s
* @param {string} t
* @return {boolean}
*/
var backspaceCompare = function(s, t) {
return inputStr(s) === inputStr(t);
};
var inputStr = function(str) {
let stack = [];
for(char of str) {
if(char === '#'){
if(stack.length) { // 字符为退格键且栈顶元素不为空执行pop操作
stack.pop();
}
}else {
stack.push(char); // 非#即可入栈
}
}
return stack.join('');
}