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

力扣刷题--数组--第五天

昨天做了几道关于双指针求解的算法题,今天继续看相关的题目。

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"。

解题思路:
  从题中知道当字符串遇到“#”时,会将当前"#“和其前一位的字符清除。这里使用双指针法求解。
  因为遇到”#“是要清空其前一位字符,故这里从后往前遍历。以字符串s为例:定义i为遍历索引,skipS为记录的”#"个数,分为以下三种情况:

  • 当s[i] == "#"时,skipS+1,i-1,i继续向前遍历;
  • 当s[i] != “#” and skipS >0,此时说明i+1是"#",故应消除当前字符i-1且skipS-1,i继续向前遍历;
  • 当s[i] != “#” and skipS == 0,说明i+1不是"#",此时s[i]字符应保留,此时应跳出字符串s的循环,和同样操作的字符串t的索引进行比较。

  对于字符串t也同样按照上述方式进行判断,定义j为遍历索引,skipT为记录的"#"个数。当i>=0 and j>=0并且i和j所在索引位置字符都应该保留时,比较s[i]与t[j]是否相等,若不相等,直接返回False,如相等,则继续上述操作。

class Solution:def backspaceCompare(self, s: str, t: str) -> bool:i=len(s)-1j=len(t)-1skipS=0skipT=0while i>=0 or j>=0:# 字符串s的循环,找到下一个应该被保留的字符索引while i>=0:if s[i] == "#":skipS+=1i-=1elif skipS > 0:skipS-=1i-=1else:# 当s[i] != "#" and skipS == 0# 跳出当前循环,与下面的t的索引j进行匹配break# 字符串t的循环,找到下一个应该被保留的字符索引while j>=0:if t[j] == "#":skipT+=1j-=1elif skipT > 0:skipT-=1j-=1else:# 当t[j] != "#" and skipT == 0# 跳出当前循环,与索引i进行匹配break# 当i和j索引均大于等于0时,判断对应的字符值是否相等if i>=0 and j>=0:if s[i]!=t[j]:return False# 此时,i或j有一方索引小于0,说明最后得到的两个字符串至少差了一个字符,故肯定不会相等,返回Falseelif i>=0 or j>=0:return Falsei-=1j-=1return True

  这道题力扣上是简单题,但是我想了挺久的也没有做出来,最后是看了题解才明白,因为我最开始是想按照昨天快慢指针的方式,对s和t字符串分别得到新字符串之后,直接比较两个新字符串是否一致就行了,但是最后越写越不对。

参考:
https://leetcode.cn/problems/backspace-string-compare/solutions/683776/shuang-zhi-zhen-bi-jiao-han-tui-ge-de-zi-8fn8/

相关文章:

力扣刷题--数组--第五天

昨天做了几道关于双指针求解的算法题,今天继续看相关的题目。 844. 比较含退格的字符串 给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true 。# 代表退格字符。   注意:如果对空…...

kafka学习笔记04(小滴课堂)

Kafka的producer生产者发送到Broker分区策略讲解 Kafka核心API模块-producer API讲解实战 代码: ProducerRecord介绍和key的作用 Kafka核心API模块-producerAPI回调函数实战 producer生产者发送指定分区实战 我们设置5个分区。 我们指定分区。 重新指定一个分区&am…...

三菱FX3U-4AD模拟量电压输入采集实例

硬件:PLC模块 FX3GA-24MT ;A/D模块FX&#xff13…...

OpenAI推出DALL·E 3识别器、媒体管理器

5月8日,OpenAI在官网宣布,将推出面向其文生图模型DALLE 3 的内容识别器,以及一个媒体管理器。 随着ChatGPT、DALLE 3等生成式AI产品被大量应用在实际业务中,人们越来越难分辨AI和人类创建内容的区别,这个识别器可以帮…...

Spring Boot 整合讯飞星火3.5通过接口Api接口实现聊天功能(首发)复制粘贴即可使用,后续更新WebSocket实现聊天功能

程序员必备网站&#xff1a; 天梦星服务平台 (tmxkj.top)https://tmxkj.top/#/ 1.pom.xml <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.72</version></dependency><depen…...

信息系统项目管理师——十大管理过程输入、工具和技术、输出(论文篇)一

一、项目整合管理 制定项目章程 在项目管理中&#xff0c;制定项目章程是一个关键的初始过程&#xff0c;它正式授权项目的开始并为项目设定高层次的方向。项目章程的编制涉及特定的输入、采用的工具和技术&#xff0c;以及产生的输出。以下是这些方面的详细说明&#xff1a;…...

Java——代码块

1、概念分类 使用 {} 定义的一段代码称为代码块&#xff0c;根据代码块定义的位置以及关键字&#xff0c;可分为以下四种 普通代码块静态代码块构造代码块同步代码块 2、普通代码块 定义在方法中的代码块&#xff0c;这种用法较少见&#xff1a; 3、构造代码块 构造块&…...

Ajax额

原生Ajax xml 已被json取代 http 请求方法urlhttp版本号 network 谷歌浏览器查看请求报文和响应报文 F12 network header里面有 请求头 响应头 点击view source 可以查看请求响应行 请求体在请求行头下面 get请求有url参数&#xff0c;请求体变为query String…...

5.15项目进度总结

今天完成了随机选人和实时显示的功能&#xff08;还需要维护&#xff09;&#xff0c;使得程序可以对用户的操作进行实时的显示。 实时显示的思路&#xff1a;在登录后开一个线程用一个socket去链接服务端并查询需要实时的信息&#xff0c;同时服务端把这个socket记录下来&…...

POETIZE个人博客系统源码 | 最美博客

简介&#xff1a; POETIZE个人博客系统源码 | 最美博客 这是一个 SpringBoot Vue2 Vue3 的产物&#xff0c;支持移动端自适应&#xff0c;配有完备的前台和后台管理功能。 网站分两个模块&#xff1a; 博客系统&#xff1a;具有文章&#xff0c;表白墙&#xff0c;图片墙&…...

回复完成 输入框还显示值的问题

回复完成 输入框还显示值的问题 解决代码 先把id 值清空 再构建下这个输入框 $("#details_article_reply_content").val(""); // 清空textareavar editor editormd("article_details_reply", {width: "100%",height: "100%"…...

C语言----斐波那契数列(附源代码)

各位看官们好&#xff0c;当我写了上一篇博客杨辉三角后&#xff0c;有一些看官叫我讲一下斐波那契数列。对于这个大家应该是有了解的。最简单的规律就是f(n)f(n-2)f(n-1)。就是当前是前两项之和&#xff0c;然后下标1和0都是1.从第三项开始计算的。那么我们知道规律&#xff0…...

javax.net.ssl.SSLException: Received fatal alert: protocol_version已经解决

起因&#xff1a; 在帮别人讲解项目时&#xff0c;将项目的tomcat配置完&#xff0c;点击运行后&#xff0c;报错&#xff0c;信息如标题。 解决办法&#xff1a; 在csdn百度问题&#xff0c;得到的方法主要有几个&#xff1a; 1.jdk要配置在1.8以上&#xff1b; 2.数据库地…...

uniapp 实现下拉刷新 下滑更新

效果图 在app或者小程序中向下滑动 会出现刷新数据 ,而上拉到底 需要更新数据 功能实现 主要俩种方式 依赖生命周期 在page.json中开启 page.json "style" : {"navigationBarTitleText" : "小小练习","backgroundTextStyle": &qu…...

海豚调度器如何看工作流是在哪个worker节点执行

用海豚调度器&#xff0c;执行一个工作流时&#xff0c;有时成功&#xff0c;有时失败&#xff0c;怀疑跟worker节点环境配置不一样有关。要怎样看是在哪个worker节点执行&#xff0c;在 海豚调度器 Web UI 中&#xff0c;您可以查看任务实例&#xff0c;里面有一列显示host&a…...

凸优化理论学习三|凸优化问题(一)

系列文章目录 凸优化理论学习一|最优化及凸集的基本概念 凸优化理论学习二|凸函数及其相关概念 文章目录 系列文章目录一、优化问题&#xff08;一&#xff09;标准形式的优化问题&#xff08;二&#xff09;可行点和最优点&#xff08;三&#xff09;局部最优点&#xff08;四…...

【Unity Shader入门精要 第7章】基础纹理补充内容:MipMap原理

1.纹理采样 我们对纹理采样进行显示的过程&#xff0c;可以理解为将屏幕上的一个像素&#xff08;下文用像素表示&#xff09;映射到纹理上的一个像素&#xff08;下文用纹素表示&#xff09;&#xff0c;然后用纹理上的这个像素的颜色进行显示。 理想情况下&#xff0c;屏幕…...

JeeSite Vue3:前端开发页面如何动态设置菜单展示模式?

推荐阅读&#xff1a; JeeSite Vue3&#xff1a;前端开发的未来之路(更新版) 随着技术的飞速发展&#xff0c;前端开发技术日新月异。在这个背景下&#xff0c;JeeSite Vue3 作为一个基于 Vue3、Vite、Ant-Design-Vue、TypeScript 和 Vue Vben Admin 的前端框架&#xff0c;引…...

微信小程序-禁止页面下拉回弹

微信小程序-禁止页面下拉回弹,主要是pages.json中的这3个配置: "enablePullDownRefresh": false, 这个配置项用于控制页面是否支持下拉刷新。当设置为false时&#xff0c;用户无法通过下拉页面来触发刷新操作。 "disableScroll": true, 这个配置项用于控…...

测试环境搭建整套大数据系统(十六:超级大文件处理遇到的问题)

一&#xff1a;yarn出现损坏的nodemanger 报错现象 日志&#xff1a;1/1 local-dirs usable space is below configured utilization percentage/no more usable space [ /opt/hadoop-3.2.4/data/nm-local-dir : used space above threshold of 90.0% ] ; 1/1 log-dirs usabl…...

从‘盲人摸象’到‘全局视野’:手把手教你用MATLAB/Simulink仿真PSO-MPPT对抗光伏遮荫(避坑指南)

从‘盲人摸象’到‘全局视野’&#xff1a;手把手教你用MATLAB/Simulink仿真PSO-MPPT对抗光伏遮荫&#xff08;避坑指南&#xff09; 光伏发电系统在局部遮荫条件下&#xff0c;功率-电压特性曲线会呈现多峰值现象&#xff0c;传统MPPT算法容易陷入局部最优。粒子群优化&#x…...

如何用NoFences告别桌面混乱:一个开源工具的实用指南

如何用NoFences告别桌面混乱&#xff1a;一个开源工具的实用指南 【免费下载链接】NoFences &#x1f6a7; Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 你是否曾经面对过这样的场景&#xff1a;早上打开电脑&#…...

如何快速构建完整的以太坊Go开发实战应用:从入门到精通指南 [特殊字符]

如何快速构建完整的以太坊Go开发实战应用&#xff1a;从入门到精通指南 &#x1f680; 【免费下载链接】ethereum-development-with-go-book &#x1f4d6; A little guide book on Ethereum Development with Go (golang) 项目地址: https://gitcode.com/gh_mirrors/et/ethe…...

BiliTools:重新定义B站内容消费的技术解决方案

BiliTools&#xff1a;重新定义B站内容消费的技术解决方案 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱&#xff0c;支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools 你是否曾…...

CXPatcher:让Mac上的CrossOver性能飞升的终极指南

CXPatcher&#xff1a;让Mac上的CrossOver性能飞升的终极指南 【免费下载链接】CXPatcher A patcher to upgrade Crossover dependencies and improve compatibility 项目地址: https://gitcode.com/gh_mirrors/cx/CXPatcher 你是否曾经在Mac上尝试运行Windows游戏时感到…...

CANN/Ascend C Tanh临时缓冲区因子大小获取接口

GetTanhTmpBufferFactorSize 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言&#xff0c;原生支持C和C标准规范&#xff0c;主要由类库和语言扩展层构成&#xff0c;提供多层级API&#xff0c;满足多维场景算子开发诉求。 项目地址: htt…...

Burp Suite新手必看:用Target Scope精准抓包,告别YouTube和Google Analytics的干扰流量

Burp Suite实战指南&#xff1a;用Target Scope打造无干扰渗透测试环境 渗透测试过程中&#xff0c;你是否曾被海量的无关HTTP请求淹没&#xff1f;当你在Burp Suite的HTTP History中翻找关键请求时&#xff0c;YouTube的广告追踪、Google Analytics的数据收集以及其他第三方脚…...

如何快速跳过FF14副本动画:终极ACT插件安装与使用指南

如何快速跳过FF14副本动画&#xff1a;终极ACT插件安装与使用指南 【免费下载链接】FFXIV_ACT_CutsceneSkip 项目地址: https://gitcode.com/gh_mirrors/ff/FFXIV_ACT_CutsceneSkip 还在为《最终幻想14》国服副本中那些无法跳过的冗长动画而烦恼吗&#xff1f;FFXIV_AC…...

CH340G模块除了下载程序,还能这么玩?一个硬件调试小技巧分享

CH340G模块的隐藏技能&#xff1a;用串口调试提升硬件开发效率 当你拿到一片CH340G模块时&#xff0c;第一反应可能是"这是个下载程序的好工具"。确实&#xff0c;这个价格亲民的小模块在51单片机开发中扮演着重要角色。但今天&#xff0c;我要分享的是它另一个被低估…...

SEM教程丨如何用“场景词”突围,月揽165个询盘?

很多工业设备老板觉得SEM就是“谁出价高谁就赢”&#xff0c;结果往往是钱烧了一大堆&#xff0c;机器没卖出去几台。今天我们要复盘的是某食品安检设备公司的实操案例&#xff0c;看看它是如何摆脱“无效烧钱”&#xff0c;稳稳拿下月均165个精准咨询的 &#x1f34e;。 一、 …...