网络异常,图片无法展示
|
给定 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-比较含退格的字符串
如有任何问题或建议,欢迎留言讨论!