当前位置: 首页 > 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…...

OpenClaw+Phi-3-vision-128k-instruct安全方案:敏感数据本地化处理指南

OpenClawPhi-3-vision-128k-instruct安全方案&#xff1a;敏感数据本地化处理指南 1. 为什么需要本地化处理敏感数据&#xff1f; 上周我帮一位做财务咨询的朋友处理季度报表时&#xff0c;他提到一个痛点&#xff1a;每次用云端AI工具分析客户财务数据都提心吊胆。这让我意识…...

什么是模型存储

模型存储的理解 模型存储是指将训练好的机器学习模型保存到磁盘&#xff0c;以便后续直接使用而无需重新训练。 为什么需要模型存储&#xff1f; # 没有模型存储&#xff1a;每次使用都要重新训练 model train_model(data) # 可能需要几小时 prediction model.predict(ne…...

Grove-I2C颜色传感器驱动开发与RGB色彩识别实践

1. Grove-I2C颜色传感器技术解析与嵌入式驱动开发实践 1.1 模块硬件架构与传感原理 Grove-I2C颜色传感器模块基于TAOS&#xff08;现为ams OSRAM&#xff09;TCS3414CS高精度数字颜色传感器芯片设计&#xff0c;其核心传感单元由16个微型光电二极管阵列构成&#xff0c;呈82物…...

ESC固件底层开发:寄存器级驱动与无传感器换相实现

1. ESC固件底层技术解析&#xff1a;电子调速器固件架构与驱动实现电子调速器&#xff08;Electronic Speed Controller, ESC&#xff09;是无人机、电动航模、机器人驱动系统中的核心执行单元&#xff0c;其本质是一个高动态响应的三相逆变器控制器。ESC固件并非简单的PWM输出…...

Mac开发者必备:OpenClaw联动千问3.5-27B实现代码审查自动化

Mac开发者必备&#xff1a;OpenClaw联动千问3.5-27B实现代码审查自动化 1. 为什么需要代码审查自动化&#xff1f; 作为独立开发者&#xff0c;我经常面临一个尴尬局面&#xff1a;在深夜提交代码后&#xff0c;第二天才发现引入了低级语法错误或潜在漏洞。传统CI工具虽然能捕…...

JAVA语法,接口和抽象类应该如何抉择

01.面向对象设计特性1.1 抽象和接口特性在面向对象编程中&#xff0c;抽象类和接口是两个经常被用到的语法概念&#xff0c;是面向对象四大特性&#xff0c;以及很多设计模式、设计思想、设计原则编程实现的基础。比如&#xff0c;我们可以使用接口来实现面向对象的抽象特性、多…...

Shox96 Progmem:嵌入式Flash短字符串高效压缩方案

1. Shox96 Progmem 压缩库技术解析&#xff1a;面向嵌入式 Flash 的短字符串高效压缩方案1.1 工程背景与设计动因在资源受限的嵌入式系统中&#xff0c;Flash 存储空间始终是关键瓶颈。以典型 Cortex-M0/M3 MCU&#xff08;如 STM32F072、nRF52832&#xff09;为例&#xff0c;…...

libcimbar视觉传输工具实战指南:跨设备无网络数据传输解决方案

libcimbar视觉传输工具实战指南&#xff1a;跨设备无网络数据传输解决方案 【免费下载链接】libcimbar Optimized implementation for color-icon-matrix barcodes 项目地址: https://gitcode.com/GitHub_Trending/li/libcimbar 一、核心价值解析&#xff1a;突破网络限…...

Nunchaku FLUX.1-dev效果展示:4步生成惊艳图片案例分享

Nunchaku FLUX.1-dev效果展示&#xff1a;4步生成惊艳图片案例分享 你是否曾经被AI生成图片的漫长等待时间所困扰&#xff1f;传统文生图模型往往需要20步以上的推理才能获得理想效果&#xff0c;而今天我要展示的Nunchaku FLUX.1-dev模型&#xff0c;仅需4步就能生成令人惊艳…...

新手零基础入门:借助快马AI生成带注释的微信小程序示例代码

作为一个刚接触微信小程序开发的新手&#xff0c;我最近在InsCode(快马)平台上尝试了一个特别适合零基础学习的实践项目。这个平台最让我惊喜的是&#xff0c;只需要用自然语言描述需求&#xff0c;就能快速生成带详细注释的完整代码&#xff0c;这对理解小程序开发流程帮助很大…...