[路飞]_leetcode-844-比较含退格的字符串

简介: leetcode-844-比较含退格的字符串

网络异常,图片无法展示
|


[题目地址][B站地址]


给定 st 两个字符串,当它们分别被输入到空白的文本编辑器后,请你判断二者是否相等。# 代表退格字符。


如果相等,返回 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
  • st 只含有小写字母以及字符 '#'


进阶:


  • 你可以用 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-比较含退格的字符串


如有任何问题或建议,欢迎留言讨论!

相关文章
|
20天前
|
Go C++
【力扣】2696. 删除子串后的字符串最小长度(模拟 栈 C++ Go实现栈)
【2月更文挑战第18天】2696. 删除子串后的字符串最小长度(模拟 栈 C++ Go实现栈)
36 6
|
20天前
|
存储
力扣面试经典题之数组/字符串
力扣面试经典题之数组/字符串
27 0
|
20天前
|
存储 算法 安全
【刷题】 leetcode 面试题 01.06 字符串压缩
来看效果: 非常好!!!过啦!!!
32 5
【刷题】 leetcode 面试题 01.06 字符串压缩
|
20天前
leetcode代码记录(删除字符串中的所有相邻重复项
leetcode代码记录(删除字符串中的所有相邻重复项
14 0
|
20天前
|
算法
代码随想录算法训练营第五十五天 | LeetCode 583. 两个字符串的删除操作、72. 编辑距离、编辑距离总结
代码随想录算法训练营第五十五天 | LeetCode 583. 两个字符串的删除操作、72. 编辑距离、编辑距离总结
29 1
|
20天前
|
存储 编译器 Linux
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
|
20天前
|
机器学习/深度学习 索引
【力扣】387. 字符串中的第一个唯一字符
【力扣】387. 字符串中的第一个唯一字符
|
20天前
【力扣】28. 找出字符串中第一个匹配项的下标
【力扣】28. 找出字符串中第一个匹配项的下标
|
20天前
|
存储
leetcode2744. 最大字符串配对数目
leetcode2744. 最大字符串配对数目
19 0