无重复最长字符串(最长无重复子字符串),剑指offer,力扣

news2025/1/1 23:18:39

目录

原题:

力扣地址:

我们直接看题解吧:

解题方法:

难度分析:

难度算中下吧,这个总体不算很难,而且滑动窗口,以及哈希都比较常见

审题目+事例+提示:

解题思路(滑动窗口+哈希):

代码实现:


原题:

1.题目:最长不含重复字符的子字符串

请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。假设字符串中值包含‘a’-‘z’的字符。例如,在字符串“arabcacfr”中,最长的不含重复字符的子字符串是“acfr”,长度为4。

力扣地址:

LCR 167. 招式拆解 I - 力扣(LeetCode)

难度:中等

今天刷无重复最长字符串(最长无重复子字符串),大家有兴趣可以点上看看题目要求,试着做一下。

我们直接看题解吧:

解题方法:

这道题比较明显的看出适合用滑动窗口(双指针)题目,同时+哈希(效率更高)

难度分析:

难度算中下吧,这个总体不算很难,而且滑动窗口,以及哈希都比较常见

审题目+事例+提示:

解题思路(滑动窗口+哈希):

1、定义双指针f=0,s=-1,从字符串的同一侧出发进行遍历

2、f首先遍历:

    ·若与前面无重复,则放入哈希表,更新最长字符串长度,接着遍历下一位

   · 若当前出现与之前的字符重复,则f访问下一位,s访问前面重复字符的下一位

   ·重复上述过程。

3、返回对应的字符串长度

代码实现:

class Solution {
    public int dismantlingAction(String arr) {
           //创建哈希表,key装字符元素,value装对应的下标
        Map<Character, Integer> dic = new HashMap<>();
         //res装相应字符串最大长度
        int s = -1, res = 0, len = arr.length();
        for(int f = 0; f < len; f++) {
            if (dic.containsKey(arr.charAt(j)))
                //与前面字符出现重复,比较下标大小,更新s
                s = Math.max(s, dic.get(arr.charAt(f))); // 更新左指针 s
            // 当存在重复时更新重复元素哈希表记录的下标,当无重复时放入无重复元素及下标
            dic.put(arr.charAt(f), f);
            res = Math.max(res, f - s); // 更新最长字符串长度结果
        }
        return res;
    }
}

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

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

相关文章

windows下安装make工具

我使用的windows的gitbash命令行终端。未安装时&#xff0c;发现系统没有make命令。 make -h bash: make: command not found使用windows的包管理工具winget安装&#xff1a; winget.exe install gnuwin32.make2. 将安装的make的bin目录添加到环境变量&#xff1a; setx PATH …

HTTP Error 500.31 - Failed to load ASP.NET Core runtime

在winserver服务器上部署net6应用后&#xff0c;访问接口得到以下提示&#xff1a; 原因是因为没有安装net6的运行时和环境&#xff0c;我们可以在windows自带的 “事件查看器” 查看原因。 可以直接根据给出的地址去官网下载sdk环境&#xff0c;安装即可 下载对应的net版本…

前端反卷计划-组件库-03-组件样式

Hi, 大家好&#xff01;我是程序员库里。 今天开始分享如何从0搭建UI组件库。这也是前端反卷计划中的一项。 在接下来的日子&#xff0c;我会持续分享前端反卷计划中的每个知识点。 以下是前端反卷计划的内容&#xff1a; 目前这些内容持续更新到了我的 学习文档 中。感兴趣…

C++中静态成员变量和普通成员变量、私有成员变量和公有成员变量的区别

本文主要介绍和记录C中静态成员变量和普通成员变量、私有成员变量和公有成员变量的区别&#xff0c;并给出相关示例程序&#xff0c;最后结合相关工程应用中编译报错给出报错原因及介绍思路 一、静态成员变量和普通成员变量 C中&#xff0c;静态成员变量和普通成员变量有一些重…

SpringBoot+Vue3+MySQL集群 开发健康体检双系统

第1章 课程介绍 试看4 节 | 38分钟 观看项目演示&#xff0c;熟悉大健康体检项目主要功能。掌握学习本课程的最佳方法&#xff0c;以及如何利用在线手册学习和答疑。 收起列表 视频&#xff1a; 1-1 导学 (22:46) 试看 视频&#xff1a; 1-2 学习方法注意事项 (07:46) 视频&am…

chromium通信系统-mojo系统(一)-ipcz系统基本概念

ipcz 是chromium的跨进程通信系统。z可能是代表zero&#xff0c;表示0拷贝通信。 chromium的文档是非常丰富的&#xff0c;关于ipcz最重要的一篇官方文档是IPCZ。 关于ipcz本篇文章主要的目的是通过源代码去分析它的实现。再进入分析前我们先对官方文档做一个总结&#xff0c;…

北邮22级信通院数电:Verilog-FPGA(9)第九周实验(3)实现一个具有清零功能的按键计数器,对按键进行计数并显示

北邮22信通一枚~ 跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章 持续关注作者 迎接数电实验学习~ 获取更多文章&#xff0c;请访问专栏&#xff1a; 北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客 目录 一.代码部分 1.1 counter.v 1.2 debounce.v …

MIKE水动力笔记20_由dfs2网格文件提取dfs1断面序列文件

本文目录 前言Step 1 MIKE Zero工具箱Step 2 提取dfs1 前言 在MIKE中&#xff0c;dfs2是一个一个小格格的网格面的时间序列文件&#xff0c;dfs1是一条由多个点组成的线的时间序列文件。 如下两图&#xff1a; 本博文内容主要讲如何从dfs2网格文件中提取dfs1断面序列文件。 …

大数据Doris(二十五):数据导入演示和其他导入案例

文章目录 数据导入演示和其他导入案例 一、数据导入演示

jvm 内存结构 ^_^

1. 程序计数器 2. 虚拟机栈 3. 本地方法栈 4. 堆 5. 方法区 程序计数器 定义&#xff1a; Program Counter Register 程序计数器&#xff08;寄存器&#xff09; 作用&#xff0c;是记住下一条jvm指令的执行地址 特点&#xff1a; 是线程私有的 不会存在内存溢出 虚拟机栈…

【MATLAB源码-第81期】基于matlab的polar码三种译码算法比较(SC,SCL,BP)。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 Polar码&#xff08;Polar Codes&#xff09;是一种前向纠错编码方法&#xff0c;被认为是实现信道容量极限的编码方法之一。它在某些场合下&#xff0c;如5G通信标准中得到了应用。Polar码的主要译码算法包括Successive Can…

Flutter 应用启动从闪屏页短暂黑屏再到第一个页面

由于应用初始状态启动会有白屏现象&#xff0c;便使用 flutter_native_splash 2.3.5 插件生成了启动相关的配置&#xff0c;并且按照示例使用了 import package:flutter_native_splash/flutter_native_splash.dart;void main() {WidgetsBinding widgetsBinding WidgetsFlutte…

【SAP-ABAP】--MRKO隐式增强字段步骤

业务需求&#xff1a;给MRKO增加几个增强字段 给标准表进行增强 1.如果标准表或者结构&#xff0c;带CL_***&#xff0c;一般表示SAP预留的增强位置&#xff0c;可以 直接双击这个类型&#xff0c;点击创建&#xff0c;然后直接在预留的结构里面添加自己 需要增加的字段 2.如…

MySQL事务特性原理

文章目录 事务四特性预备知识checkpoint机制redo日志redo的流程事务提交后什么时候进行刷盘 undo日志&#xff1a;数据还未被修改、也是备份Undo日志的作用undo的存储结构回滚段与事务回滚段中的数据分类undo的类型undo log的生命周期 MVCC一、 原子性原理如何通过undo日志实现…

001.HCIA_网络基本概念

1、网络历史 网络历史——数通为什么产生? 1946年:世界上第一台计算机诞生。军事科研--高速运算 1962年:古巴导弹危机 1969年:美国国防部高级研究计划署ARPA“巨型网络”--ARPAnet 阿帕网 厂商垄断——不能大规模普及 IBM 每个厂商都单独定义标准 问题:网络没有标准 1…

QMenuBar和QToolBar使用同一个QAction

文章目录 前言一、编辑QMenuBar二、将QMenuBar中的Action添加到toolbar总结 前言 qmenubar中的action添加到toolbar&#xff0c;不是在toolbar中再添加action&#xff0c;效果图如下 一、编辑QMenuBar 正常编辑QMenuBar&#xff0c;以下图为例 二、将QMenuBar中的Action添…

双极性集成电路芯片 D7312,可用于小型收录机中作前置放大电路。电源开关冲击噪音小、 反应快

一块双极性集成电路芯片 D7312。可用于小型收录机中作前置放大电路。 主要特点&#xff1a; ● 含ALC电路和ALC检波电路。 ● 外接元件少。 ● 增益高&#xff0c;噪声低。 ● 静态电流小 ● 电源开关冲击噪音小、 反应快 ● 具有过热保护功能 …

本地生活视频号团购怎么做?一部分人已经吃到红利!

重磅消息&#xff01;视频号本地生活团购上线了&#xff01;作为新的流量聚集地&#xff0c;视频号通过带货达人、商家、团购商品三者在微信平台提升了更多的曝光量与转化率&#xff0c;同时在短视频挂载、直播挂载的基础上&#xff0c;实现了视频号团购的交易闭环&#xff0c;…

VSCode 运行java程序中文乱码

现象描述 java文件中包含中文&#xff0c;运行java程序后&#xff0c;乱码报错。 解决方法 原本运行指令为 cd "d:\programProjects\Java_proj\" ; if ($?) { javac Solution.java } ; if ($?) { java Solution } 需要添加 编码格式 -encoding utf8 cd &quo…

企业防泄密软件——域之盾软件

在当今这个数字化时代&#xff0c;信息的安全性变得越来越重要。对于企业而言&#xff0c;保护核心信息不被泄露显得尤为重要。域之盾软件作为企业防泄密软件&#xff0c;旨在为企业提供全方位的信息安全保障。 其具有出色的防护功能&#xff0c;能够有效地防止企业内部信息泄露…