题目
给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,请你判断二者是否相等。# 代表退格字符。
如果相等,返回 true ;否则,返回 false 。
示例 1:
输入: s = "ab#c", t = "ad#c"
输出: true
解释: S 和 T 都会变成 “ac”。
来源:力扣(LeetCode)leetcode-cn.com/problems/ba…
解题思路
- #号代表回退,也就是把前面的字符去掉,使用栈可以很方便地处理这种情况,字符依次入栈,当遇到#号时把栈顶元素去掉;
- 两个字符串通过第1步操作后再对比是否相等即可;
- 例子中的
ab#c
遇到#号去掉前面的b后等于ac
,ad#c
遇到#好去掉前面的d后等于ac
,所以返回 true
代码实现
var backspaceCompare = function (s, t) {
//把两个字符串的#号和#号前的字符去掉后对比是否相等
return convertString(s) === convertString(t)
};
var convertString = function (s) {
//遍历字符串的字符,遇到#时出栈,否则入栈
let stack = []
for (let c of s) {
if (c === '#') {
stack.pop()
} else {
stack.push(c)
}
}
return stack.join('')
}
如有错误欢迎指出,欢迎一起讨论!