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

每日一题(LeetCode)----数组--移除元素(四)

每日一题(LeetCode)----数组–移除元素(四)

1.题目([844. 比较含退格的字符串](https://leetcode.cn/problems/sqrtx/))

给定 st 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 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
  • st 只含有小写字母以及字符 '#'

进阶:

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

2.解题思路

思路一: 重构字符串(单指针)

1.先将两个字符串中的退格字符和应该被删除的字符去除掉

我们用一个变量来存已经遍历到的退格字符的数量

然后我们从后向前遍历这两个字符串

如果遍历到的是退格字符,那么删除退格字符,然后记录已经遍历到退格字符的数量的变量进行加一操作

如果遍历到的是字符,那我们看记录已经遍历到退格字符的数量的变量是否大于0

如果大于0删除当前遍历到的字符,记录已经遍历到退格字符的数量的变量进行减一操作

如果小于0,那么不进行操作,进行向前遍历

2.然后将两个字符串进行比较

思路二: 重构字符串(栈)

最容易想到的方法是将给定的字符串中的退格符和应当被删除的字符都去除,还原给定字符串的一般形式。然后直接比较两字符串是否相等即可。

具体地,我们用栈处理遍历过程,每次我们遍历到一个字符:

如果它是退格符,那么我们将栈顶弹出;

如果它是普通字符,那么我们将其压入栈中。

原作者:力扣官方题解
链接:https://leetcode.cn/problems/backspace-string-compare/

3.写出代码

思路一的代码:

class Solution {
public:bool backspaceCompare(string s, string t) {int length1 = s.size();int length2 = t.size();int sum1 = 0;int sum2 = 0;for (int i = length1 - 1; i >= 0; i--) {if (s.size() == 0) {break;}if (s[i] == '#') {s.erase(i, 1);sum1++;}else {if (sum1 > 0) {s.erase(i, 1);sum1--;}}}for (int i = length2 - 1; i >= 0; i--) {if (t.size() == 0) {break;}if (t[i] == '#') {t.erase(i, 1);sum2++;}else {if (sum2 > 0) {t.erase(i, 1);sum2--;}}}//进行比较if (s == t) {return true;}else {return false;}}
};

思路二的代码:

class Solution {
public:bool backspaceCompare(string S, string T) {return build(S) == build(T);}string build(string str) {string ret;for (char ch : str) {if (ch != '#') {ret.push_back(ch);} else if (!ret.empty()) {ret.pop_back();}}return ret;}
};
原作者:力扣官方题解
链接:https://leetcode.cn/problems/backspace-string-compare/

相关文章:

每日一题(LeetCode)----数组--移除元素(四)

每日一题(LeetCode)----数组–移除元素&#xff08;四&#xff09; 1.题目&#xff08;[844. 比较含退格的字符串](https://leetcode.cn/problems/sqrtx/)&#xff09; 给定 s 和 t 两个字符串&#xff0c;当它们分别被输入到空白的文本编辑器后&#xff0c;如果两者相等&…...

421. 数组中两个数的最大异或值/字典树【leetcode】

421. 数组中两个数的最大异或值 给你一个整数数组 nums &#xff0c;返回 nums[i] XOR nums[j] 的最大运算结果&#xff0c;其中 0 ≤ i ≤ j < n 。 示例 1&#xff1a; 输入&#xff1a;nums [3,10,5,25,2,8] 输出&#xff1a;28 解释&#xff1a;最大运算结果是 5 XOR…...

C++(20):自定义类型实现基于范围的for循环

C自定义类型&#xff0c;可以通过实现begin和end作为成员函数&#xff0c;来支持基于范围的for循环 #include <iostream>class D{ public:int* begin(){return m_data;}int* end(){return m_data 5;} private:int m_data[5]{1, 2, 3, 4, 5}; };int main() {D d;for (in…...

Linux常用命令:find、grep、vim、cat、less、more

目录 我的常用搜索命令 find 命令 grep 命令 vim 常用命令&#xff1a; 1.光标移动命令 2插入命令 3.删除命令 4.复制和粘贴命令 5.撤销和重做命令 6.查找和替换命令 7.文件操作命令 8.其他命令 cat命令 less 命令 more 命令 less和more命令的区别 less和vim命…...

Oracle导入,注意事项

在执行导入时&#xff0c;如果导入的触发器引用的表不存在&#xff0c;可能会导致错误。触发器通常会在相关的表结构之后导入&#xff0c;但在导入阶段&#xff0c;表的创建并不一定会立即执行。 在 Oracle 数据库中&#xff0c;触发器的创建可能涉及到对表的引用&#xff0c;…...

【数据结构】入队序列出队序列问题(以21年408真题举例)

题型说明 一般是一个队列&#xff0c;其中一边可以入队&#xff0c;另一边可以入队和出队只可入队的含义是从这个方向是以队列形式存在可以入队和出队表示此边以堆形式存在 怎么分析&#xff1f; 以21年408真题举例 考点分析 出队序列存在两种情况&#xff1a;入之后就出&…...

在ant构建脚本中调用maven的命令

有时候想用maven管理依赖&#xff0c;用ant构建。 在ant的build.xml文件中可以使用exec这个task来调用系统命令&#xff0c;也就可以调用maven的命令。 例如&#xff0c;执行maven的命令mvn dependency:copy-dependencies&#xff0c;可以将项目的依赖提取出来&#xff0c;放…...

美格智能5G RedCap模组顺利完成中国联通5G物联网OPENLAB开放实验室认证

近日&#xff0c;美格智能5G RedCap模组SRM813Q顺利通过中国联通5G物联网OPENLAB开放实验室端到端的测试验收&#xff0c;并获得OPENLAB实验室的认证证书。这标志着该模组产品各项性能均已符合RedCap商用标准&#xff0c;为5G RedCap规模商用奠定了坚实基础。 中国联通5G物联网…...

Git基础知识学习常用命令一

常用命令 $ git status 工作区域与仓库保持一致step2: 暂存状态 $ git add --all # 当前项目下的所有更改 $ git add . # 当前目录下的所有更改 $ git add xx/xx.py xx/xx2.py # 添加某几个文件Step3: commit $ git commit -m"<这里写commit的描述>" 已提…...

【2023.11.6】OpenAI发布会——近期chatgpt被攻击,不能使用

OpenAI发布会 写在最前面发布会内容GPT-4 Turbo 具有 128K 上下文函数调用更新改进了指令遵循和 JSON 模式可重现的输出和对数概率更新了 GPT-3.5 Turbo 助手 API、检索和代码解释器API 中的新模式GPT-4 Turbo 带视觉DALLE 3文字转语音 &#xff08;TTS&#xff09;收听语音样本…...

云原生 黑马Kubernetes教程(K8S教程)笔记——kubernetes介绍。Master集群控制节点、Node工作负载节点、Pod控制单元

参考文章&#xff1a;kubernetes介绍 文章目录 1. Kubernetes介绍1.1 应用部署方式演变传统部署&#xff1a;互联网早期&#xff0c;会直接将应用程序部署在物理机上虚拟化部署&#xff1a;可以在一台物理机上运行多个虚拟机&#xff0c;每个虚拟机都是独立的一个环境&#xff…...

[护网杯 2018]easy_tornado 1(两种解法!)

题目环境&#xff1a;发现有三个txt文本文件 /flag.txt/welcome.txt/hints.txt 依此点开 flag在/fllllllllllllag文件中 在hints.txt文件中发现md5计算 md5(cookie_secretmd5(filename)) 并且三个文件中都存在filehash&#xff08;文件名被哈希算法加密32位小写&#xff09; 猜…...

冒泡排序(Bubble Sort)

目录 1.冒泡排序1.1 基本原理1.2 例子1.3 示例代码 2.魔炮排序2.1 基本原理2.1 例子2.2 示例代码 1.冒泡排序 1.1 基本原理 冒泡排序&#xff08;Bubble Sort&#xff09;是一种简单的排序算法。它重复地遍历待排序的数列&#xff0c;一次比较两个元素&#xff0c;如果他们的…...

JVM源码剖析之软、弱、虚引用的处理细节

目录 写在前面&#xff1a; 源码剖析&#xff1a; Java层面&#xff1a; JVM层面&#xff1a; 使用危险点&#xff1a; 总结&#xff1a; 版本信息&#xff1a; jdk版本&#xff1a;jdk8u40 垃圾回收器&#xff1a;Serial new/old 写在前面&#xff1a; 不同的垃圾回收…...

Linux服务器上搭建JupyterNotebook教程

搭建需知 1.确保是Linux服务器&#xff1b; 2.已经在linux服务器上安装好anaconda3&#xff1b; 搭建教程 请按照顺序依次执行下面的命令&#xff1a; 1、安装Jupyter Notebook 执行以下命令&#xff0c;安装jupyter notebook conda install jupyter【注】 如果anaconda3…...

记录bug1

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 例如&#xff1a;项目场景&#xff1a;示例:通过蓝牙芯片(HC-05)与手机 APP 通信&#xff0c;每隔 5s 传输一批传感器数据(不是很大) 问题描述 提示&#xff1a;这里描述项目中遇到的问题&#xff1…...

【MySQL】rank()、row_number()、dense_rank()用法详解

建表测试 测试表数据&#xff1a;test1 CREATE DATABASE /*!32312 IF NOT EXISTS*/db_test /*!40100 DEFAULT CHARACTER SET utf8 */; USE db_test; /*Table structure for table test1 */ DROP TABLE IF EXISTS test1; CREATE TABLE test1 ( id int(10) NOT NULL, score i…...

NFT合约部署

部署合约&#xff1a; 1.web3 NFT合约部署工具 https://remix.ethereum.org/ 2.tron NFT合约部署工具 https://www.tronide.io/ 3.部署 web3 ERC721代码&#xff1a; // SPDX-License-Identifier: MIT pragma solidity ^0.8.2;import "openzeppelin/contracts/token/ERC7…...

【C++】从入门到精通第三弹——友元函数与静态类成员

这里写目录标题 静态类成员友元友元方法 静态类成员 类成员一般都需要通过对象来访问&#xff0c;不可以通过类名直接访问&#xff0c;但是当我们将类成员定义为静态类成员&#xff0c;则允许使用类名直接访问。 静态类成员是在类成员前定义static关键字。 1 #include<iost…...

acwing算法基础之搜索与图论--floyd算法

目录 1 基础知识2 模板3 工程化 1 基础知识 floyd算法的时间复杂度为O(n^3)&#xff0c;它用来解决多源最短路问题。它的原理是基于动态规划。 floyd算法的关键步骤&#xff1a; k从1到n。i从1到n。j从1到n&#xff0c;d[i][j] min(d[i][j], d[i][k] d[k][j])。经过上述三…...

避坑指南:调整Intel/AMD平台PCIe超时设置前,你必须知道的CPU内部Timer架构

深入解析Intel/AMD平台PCIe超时机制&#xff1a;系统架构师必须了解的CPU内部Timer设计 在当今高性能计算和低延迟网络应用中&#xff0c;PCIe设备的稳定性和性能优化成为系统架构师面临的核心挑战之一。当FPGA加速卡突然停止响应&#xff0c;或者100G网卡出现间歇性数据丢失时…...

从原理到实践:详解双目散斑结构光的生成与优化

1. 散斑结构光的基础原理 当你用手电筒照射粗糙墙面时&#xff0c;会看到无数闪烁的光点&#xff0c;这就是自然界中最常见的散斑现象。在三维视觉领域&#xff0c;我们通过精心设计的伪随机散斑图案&#xff08;Pseudorandom Speckle Pattern&#xff09;&#xff0c;将这种物…...

Qwen3-ASR-0.6B快速入门:10分钟搭建语音识别Demo

Qwen3-ASR-0.6B快速入门&#xff1a;10分钟搭建语音识别Demo 语音识别技术正在改变我们与设备交互的方式&#xff0c;从智能助手到实时字幕&#xff0c;处处都有它的身影。今天我要带你快速上手Qwen3-ASR-0.6B&#xff0c;这是一个轻量级但功能强大的语音识别模型&#xff0c;…...

当AI学会编程,我们还能做什么邑

基础示例&#xff1a;单工作表 Excel 转 TXT 以下是将一个 Excel 文件中的第一个工作表转换为 TXT 的完整步骤&#xff1a; 1. 加载并读取Excel文件 from spire.xls import * from spire.xls.common import * workbook Workbook() workbook.LoadFromFile("示例.xlsx"…...

Qwen2.5-72B-Instruct-GPTQ-Int4多场景:医疗问诊记录结构化+术语标准化

Qwen2.5-72B-Instruct-GPTQ-Int4多场景&#xff1a;医疗问诊记录结构化术语标准化 1. 模型简介与核心能力 1.1 Qwen2.5系列模型概述 Qwen2.5是通义千问大模型系列的最新版本&#xff0c;提供了从0.5B到720B参数规模的基础模型和指令调优模型。相比前代Qwen2&#xff0c;Qwen…...

4.2《深入理解内存池(Memory Pool)与内存块(Memory Slab)设计与实现》

001、内存管理基础:从malloc/free到自定义内存管理器的必要性 一、从一次深夜调试说起 上周排查一个嵌入式设备偶发性死机问题,日志停在某行动态分配代码后消失。堆内存碎片化了——连续运行十几小时后,8MB的堆剩余总量还有3MB,但就是无法分配出一个连续的50KB缓冲区。设备…...

002、YOLOv11改进策略全景图:方法论总览

今天调一个边缘设备上的推理异常&#xff0c;模型在PC端mAP跑得挺漂亮&#xff0c;一上板子就崩。盯着终端里飘出来的乱码和内存溢出日志&#xff0c;突然意识到&#xff1a;我们整天讨论改进YOLO&#xff0c;到底在改进什么&#xff1f;是盲目堆模块刷榜&#xff0c;还是真正解…...

赶考小状元AI事业大使兴起的核心驱动力是什么?——深度解析AI事业大使模式的增长逻辑

在人工智能技术快速渗透各行各业的今天&#xff0c;一种名为“AI事业大使”的模式正悄然兴起&#xff0c;尤其以“赶考小状元”为代表的案例引人关注。这种模式不仅吸引了众多从业者加入&#xff0c;更在短时间内展现出强劲的增长势头。那么&#xff0c;赶考小状元AI事业大使兴…...

避开Epic安装陷阱:从DirectX冲突到VC++运行库的终极修复指南

深度解析Epic游戏平台安装故障&#xff1a;从系统组件修复到环境配置的全方位指南 系统组件冲突的根源分析 当你在Windows系统上尝试安装Epic游戏平台时遇到"Windows Installer软件包问题"的错误提示&#xff0c;这通常意味着系统底层组件出现了兼容性或完整性故障。…...

8万个Skills、4大框架、500+企业实战:AI Agent Skill生态全景图

三个月前 Anthropic 的 Barry 和 Mahesh 在一次内部分享里说了一句话&#xff1a;别再造 Agent 了&#xff0c;造 Skills 就够了。三个月后&#xff0c;GitHub 上 Skills 仓库超过 8 万个&#xff0c;Uber 内部管着 500 个&#xff0c;四个头部开源框架加起来拿了 30 万星。Ski…...