给定 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
只含有小写字母以及字符'#'
进阶:
- 你可以用
O(N)
的时间复杂度和O(1)
的空间复杂度解决该问题吗?
本题只需要根据题意,处理两个字符串得到最后的结果,对比两个结果字符串是否相等即可
处理过程为创建数组 arr
,用来存储每一个字符
遍历字符串,如果为 #
,则将数组最后一位删除,否则将当前字符 push
到数组中
最后通过 arr.join('')
即可获取到 s
处理后的结果
代码如下:
var backspaceCompare = function(s, t) {
// 创建数组存储处理过程中的字符
let arr = [];
// 处理 s
for(let i = 0;i<s.length;i++){
if(s[i]==='#'){
arr.pop();
}else{
arr.push(s[i])
}
}
// 获取 s 处理后的结果
s = arr.join('')
// 重置 arr
arr = [];
// 处理 t
for(let i = 0;i<t.length;i++){
if(t[i]==='#'){
arr.pop();
}else{
arr.push(t[i])
}
}
// 返回两个字符串处理后的结果是否相同
return s===arr.join('')
};
复制代码
至此我们就完成了 leetcode-844-比较含退格的字符串
如有任何问题或建议,欢迎留言讨论!