当前位置: 首页 > news >正文

LeetCode 844.比较含退格的字符串

给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true 。# 代表退格字符。

注意:如果对空文本输入退格字符,文本继续为空。

示例 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 = “b”
输出:false
解释:s 会变成 “c”,但 t 仍然是 “b”。

提示:

1 <= s.length, t.length <= 200
s 和 t 只含有小写字母以及字符 ‘#’

进阶:

你可以用 O(n) 的时间复杂度和 O(1) 的空间复杂度解决该问题吗?

双指针,两个指针开始时各自指向两个字符串尾部,然后向前遍历即可:

class Solution {
public:bool backspaceCompare(string s, string t) {int sIdx = s.size() - 1;int tIdx = t.size() - 1;int sDelete = 0;int tDelete = 0;while (sIdx >= 0 && tIdx >= 0) {if (s[sIdx] == '#') {--sIdx;++sDelete;continue;}if (t[tIdx] == '#') {--tIdx;++tDelete;continue;}if (sDelete > 0) {--sIdx;--sDelete;continue;}if (tDelete > 0) {--tIdx;--tDelete;continue;}if (s[sIdx] != t[tIdx]) {return false;}--sIdx;--tIdx;}// 以上循环结束时,可能s或t其中一个还没有遍历完// s尚未遍历完,由于t已被遍历完,因此接下来s中不可以出现删不掉的字符while (sIdx >= 0) {if (s[sIdx] == '#') {--sIdx;++sDelete;continue;}if (sDelete > 0) {--sIdx;--sDelete;continue;}return false;}while (tIdx >= 0) {if (t[tIdx] == '#') {--tIdx;++tDelete;continue;}if (tDelete > 0) {--tIdx;--tDelete;continue;}return false;}return true;}
};

如果s的长度为n,t的长度为m,则此算法时间复杂度为O(n+m),空间复杂度为O(1)。

http://www.dtcms.com/a/363713.html

相关文章:

  • Spring 事务原理解析:AOP 的一次完美落地
  • 高校党建信息管理系统的设计与实现-(源码+LW+可部署)
  • wpf模板之DataTemplate
  • HTML第五课:求职登记表
  • apache-jmeter-5.1.1安装部署与使用教程(小白一看就会)​
  • Docker启动两个Redis镜像并配置一主一从
  • Spring Boot数据脱敏方案
  • sed相关知识
  • C++基础组件
  • 【值得收藏】手把手教你用PyTorch构建Transformer英汉翻译系统,从训练到推理
  • 小程序蓝牙低功耗(BLE)外围设备开发指南
  • C++革命性新特性:默认实例导出(exportDefault)让单例模式变得无比简单!
  • Vue2 入门(一)介绍及Demo项目创建
  • GISBox内置免费GIS服务器:地形服务发布与应用全指南
  • ChartView的基本使用
  • Redis 的压缩列表:像快递驿站 “紧凑货架“ 一样的内存优化结构
  • Redis-底层数据结构篇
  • 8.30美团技术岗算法第二题
  • 【C++】15. ⼆叉搜索树
  • WordPress.com 和 WordPress.org 之间的区别说明
  • 系统架构——过度设计
  • IO_HW_9_2
  • 教你 Centos 如何离线安装 rlwrap 插件(内网环境)
  • MATLAB矩阵及其运算(三)矩阵的创建
  • 一文搞懂:0-1整数规划与蒙特卡罗模拟(附MATLAB代码详解)
  • 命令行文本处理小工具:cut、sort、uniq、tr 详解与应用
  • 从零开始的python学习——函数(2)
  • shell复习(2)
  • Flutter环境搭建全攻略之-windows环境搭建
  • 毫米波雷达信号处理步骤顺序