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

力扣刷题844——比较含退格的字符串

力扣刷题844——比较含退格的字符串(简单类)

题目:

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

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

输入: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”。

标准答案(python3版本):

class Solution:def backspaceCompare(self, s: str, t: str) -> bool:def next_valid_char(string, index):backspace = 0while index >= 0:if string[index] == '#':backspace += 1elif backspace > 0:backspace -= 1else:breakindex -= 1return indexi, j = len(s) - 1, len(t) - 1while i >= 0 or j >= 0:i = next_valid_char(s, i)j = next_valid_char(t, j)if i < 0 and j < 0:return Trueif i < 0 or j < 0:return Falseif s[i] != t[j]:return Falsei -= 1j -= 1return True

解析

1、从后往前遍历字符串

2、遇到#时记录需要跳过的字符数

3、跳过被退格的字符

4、比较有效字符是否相同

5、时间复杂度O(n+m),空间复杂度O(1)

关键点:

1、必须从后往前处理

2、需要正确处理连续的#

3、处理完全退格的情况

4、提前终止不匹配的情况

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

相关文章:

  • 【C语言进阶】柔性数组
  • 电商项目_秒杀_架构升级
  • 第十八天(Linux基本命令)
  • ollama无法拉取模型导致报错
  • Spring AI 系列之二十三 - AudioModels
  • 20250724-day21
  • 自己开发VUE之web网页打包技术毕业论文——仙盟创梦IDE
  • 通过为前端项目接入GeoGebra,初步研究AI时代数学教案的生成方案
  • 深度解析:在Odoo 18中基于原生Owl框架为PWA定制功能丰富的底部导航栏
  • 后端分页接口实现
  • 在一个网页浏览器的控制台测试后端java是否支持SSE服务
  • 小旺AI截图v1.2.3版本上线,自定义快捷键全覆盖
  • 从零用java实现 小红书 springboot vue uniapp(15) 集成minio存储 支持本地和minio切换
  • Could not open JDBC Connection for transaction 问题
  • 基于SpringBoot+Uniapp的健身饮食小程序(协同过滤算法、地图组件)
  • 卫星物联网:使用兼容 Arduino 的全新 Iridium Certus 9704 开发套件深入探索
  • 人工智能与云计算双轮驱动:元宇宙如何重构全球产业生态
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 主页-评论用户名词云图实现
  • 亚纳米级检测!潜望式棱镜的“检测密码”,决定手机远景清晰度
  • 4G手机控车模块的核心功能与应用价值
  • 4种灵活的方法从POCO手机中删除联系人
  • 天邑TY1613_S905L3SB_安卓9-高安非-高安版-通刷-TTL线刷固件包
  • 考研初试专业分146!上岸新疆大学!信号与系统考研经验,通信考研小马哥。
  • 图机器学习(20)——欺诈交易检测算法
  • python基础:操作列表
  • 2024年ASOC SCI2区TOP,基于强化学习教与学优化算法RLPS-TLBO+风电场布局优化,深度解析+性能实测
  • 一种宏模板实现方法
  • (实用攻略)Linux操作系统(一)
  • 强制缓存与协商缓存
  • CentOS7 安装 rust 1.82.0