【双指针】844. 比较含退格的字符串

news2024/9/23 1:28:51

844. 比较含退格的字符串

解题思路

在这里插入图片描述

思路:函数deLETE的作用是处理带有退格符号的字符串。它使用双指针法来模拟字符串处理。初始时,慢指针slow和快指针fast都指向字符串的开头。然后,通过遍历字符串,如果当前字符不是退格符号(#),则将该字符复制到慢指针所在的位置,并且慢指针slow向后移动一位。如果当前字符是退格符号,并且慢指针slow的位置大于0(即不是字符串的开头),则将慢指针向前移动一位,相当于删除前一个字符。最后,返回处理后的字符串,使用substr函数从开头截取到慢指针slow处的子字符串。

class Solution {
    public String delete(String s){
        // 使用快慢指针来删除元素 
        // 首先快慢指针同时指向字符串的末尾位置
        // 然后一起像前面移动  遇到非目标元素 都一起向前移动
        // 遇到目标元素之后 慢指针停下来 然后 快指针移动位置

        // 设置快慢指针 目标删除 # 元素还有前面一个元素
        int slow = 0;
        int fast = 0;
        char[] arr = s.toCharArray();// 转换为字符数组

        for(fast = 0; fast < s.length(); fast++){
            if(arr[fast] != '#'){
                // 快指针指向的元素 直接覆盖慢指针指向的元素 # 
                arr[slow] = arr[fast];
                // 然后slow ++
                slow++;
            }else if(slow > 0){
                slow--;// 这句话的目的在于   我们需要删除 # 前面一个字符
            }
        }

        return new String(arr,0,slow);// 返回新的字符串
    }
    public boolean backspaceCompare(String s, String t) {
        // 将两个字符串转换为 字符数组
        return delete(s).equals(delete(t));
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/735691.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

postman报错提示 Could not get any response怎么解决

目录 postman报错 解决方法&#xff1a; 在通过postman请求做接口测试的过程中&#xff0c;有时候会遇到一些报错&#xff0c;当遇到这些报错我们不要着急&#xff0c;看着具体哪里报错&#xff0c;然后进行解决 postman报错 经常使用postman的小伙伴们都应该遇到过一些报错…

工作:三菱PLC之CC-LINK通讯知识及应用

工作&#xff1a;三菱PLC之CC-LINK通讯及应用 一. cc-link接线图&#xff08;RS485两线式接线&#xff09; CC-Link Ver.1.00兼容电缆&#xff08;特性阻抗&#xff1a;100Ω&#xff0c;终端电阻100Ω&#xff09; CC-Link Ver.1.10兼容电缆&#xff08;特性阻抗&#xff1a;…

Gradio库:使用Markdown模块创建交互式应用

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

如何使用多线程

一个进程正在运行时&#xff0c;至少会有一个线程在运行。 package ChapterOne;public class Test {public static void main(String[] args) {System.out.println(Thread.currentThread().getName());//currentThread方法返回正在被执行的线程的信息//getName返回正在被执行线…

【Docker】Docker实战

文章目录 搭建nginx服务搭建私有库Busybox阿里云上创建私有库 搭建nginx服务 首先拉取nginx的镜像。 docker pull nginx:1.24.0以后台的方式运行nginx&#xff0c;并且创建一个shell进行交互。 docker run --name nginx1 --rm -it -p 8080:80 nginx:1.24.0 bash#在交互的bas…

Kubernetes_核心组件_KubeProxy_Service找到Pod与DNS解析Service/Pod

文章目录 前言一、Service找到Pod(Iptables)二、Service找到Pod(IPVS)2.1 IPVS模式原理2.2 IPVS模式实践修改为 IPVS 模式 之前修改为 IPVS 模式之中修改为 IPVS 模式之后 三、Service和Pod的DNS域名3.1 Service DNS域名3.2 Service与Deployment/StatefulSet配合Deployment普通…

无源光网络(PON)介绍及其应用

文章目录 1、无源光网络&#xff08;PON&#xff09;介绍ONU&#xff08;Optical Network Unit&#xff09;&#xff0c;光网络单元OLT&#xff08;Optical line terminal&#xff09;&#xff0c;光线路终端 2、FTTH、FTTB、FTTR组网介绍FTTR组网规划 3、局端接入设备产品介绍…

Elasticsearch 基本使用(五)查询条件匹配方式(query query_string)

查询条件匹配方式 概述querytermtermsrangematch_allmatchmatch 匹配精度问题 match_phrasematch_pharse_prefixmatch_bool_prefixmulti_match query_string简单查询一个字段在多个字段上应用同一个条件 &#xff08;类似multi_match&#xff09;在所有字段上应用同一个条件 &a…

mysql 大数据量从“.log“文件插入方法

要被插入的数据文件以及内容 表结构 插入成功&#xff0c;插入时如果有主键唯一索引&#xff0c;则按照唯一索引的大小顺序插入&#xff0c;速度会快很多

基于Spring Boot的智能学生考勤系统设计与实现(Java+spring boot+MySQL+微信小程序+

获取源码或者论文请私信博主 演示视频&#xff1a; 基于Spring Boot的智能学生考勤系统设计与实现&#xff08;Javaspring bootMySQL微信小程序人脸识别&#xff09; 使用技术&#xff1a; 前端&#xff1a;html css javascript jQuery ajax thymeleaf 后端&#xff1a;Java…

SpringBoot 如何使用 TestEntityManager 进行 JPA 集成测试, 如何使用

Spring Boot 是一个非常流行的 Java Web 开发框架&#xff0c;它简化了开发过程&#xff0c;提高了开发效率。在开发过程中&#xff0c;我们通常需要使用 JPA 操作数据库&#xff0c;为了保证代码的质量和正确性&#xff0c;我们需要进行集成测试。TestEntityManager 是 Spring…

bat批处理脚本控制台输出中文乱码问题

背景 最近在搞springcloud框架&#xff0c;涉及各种微服务。比如服务注册与发现、网关、鉴权、文件服务、日志服务、搜索服务、用户中心等等。如果要打包发布应用&#xff0c;就得一个个去打包&#xff0c;一个个去拷贝jar包&#xff0c;很繁琐。所以就想着写个bat脚本&#x…

【Zookeeper】使用Curator操作Zookeeper

简介 Curator 是 Apache ZooKeeper 的Java客户端库。 Zookeeper现有常见的Java API如&#xff1a;原生JavaAPI、Curator、ZkClient等。 添加依赖 <dependency><groupId>org.apache.curator</groupId><artifactId>curator-framework</artifactId&…

gitlab:(二)gitlab添加win10 台式机的ssh key

当前gitlab版本为12系列&#xff1a; 点击settings 找到ssh keys &#xff0c;再找到“ generate one or use an existing key.” 点击 generate one 参考如下的教程&#xff1a; window cmd 命令行示例 添加 ssh keys 添加的效果

路由基本使用

编程式导航 默认路由 模糊匹配模式 精确匹配

【C语言】指针进化 !!!

前言 &#x1f388;大家好&#xff0c;我是何小侠&#x1f388; &#x1f343;大家可以叫我小何或者小侠&#x1f343; &#x1f490;希望能通过写博客加深自己对于学习内容的理解&#x1f490; &#x1f338;也能帮助更多人理解和学习&#x1f338; 兰生幽谷&#xff0c;不为…

Redis 五种基本数据结构及基本使用

一、数据结构 二、使用 2.1 String 的使用 Redis String 一个键对应一个值&#xff0c;并且是二进制安全的&#xff0c;值可以是图片或者序列化后的对象。 一个键最大能存储 512 MB。 2.1.1 set 命令的使用 set key value127.0.0.1:6379> set name yunhu OK 127.0.0.1:…

【Docker】docker基础使用

文章目录 docker概念什么是dockerdocker引擎迭代docker与虚拟机docker版本发展 docker基础docker架构docker Registry(镜像仓库)镜像仓库使用流程实际研发镜像仓库使用不同镜像仓库的拉取 docker常用命令镜像仓库命令docker logindocker pulldocker pushdocker searchdocker lo…

Github的加速访问(解决github进不去)

1.下载Steam Steam 现更名为 Watt Toolkit 并在 Microsoft Store 中已可用 2.打开Steam 3.勾选github 一键加速

java试题1

1、哪些问题是HTTPS无法解决的&#xff1f; Http是基于TCP协议的&#xff0c;在网络层的传输耗时比较长&#xff0c;https没有解决这个问题&#xff1b;http头是不能压缩的&#xff0c;每次要传递很大的数据包&#xff0c;每个连接也只能支持一个请求。同时https应用了很多加密…