力扣L10--- 3. 无重复字符的最长子串--2024年3月14日

1.题目在这里插入图片描述
2.知识点
注1:containsKey 是 Java 中 HashMap 类的一个方法,用于检查哈希表中是否包含指定的键。

注2:在哈希表(HashMap)中,每个键对应着唯一的值,因此键不能重复但值可以重复
(1)创建哈希表:可以使用 HashMap 类来创建一个哈希表对象。

HashMap<KeyType, ValueType> hashMap = new HashMap<>();

其中,KeyType 是键的类型,ValueType 是值的类型。
(2)添加键值对:可以使用 put() 方法向哈希表中添加键值对。

hashMap.put(key, value);

这会将指定的键和值添加到哈希表中。
(3)获取值:可以使用 get() 方法根据键来获取对应的值。

ValueType value = hashMap.get(key);

这会返回指定键对应的值,如果哈希表中不存在该键,则返回 null。
(4)检查键是否存在:可以使用 containsKey() 方法来检查哈希表中是否包含指定的键。

boolean containsKey = hashMap.containsKey(key);

如果哈希表中包含指定的键,则返回 true;否则返回 false。
(5)删除键值对:可以使用 remove() 方法来删除指定键的键值对。

ValueType removedValue = hashMap.remove(key);

(6)遍历哈希表:可以使用 entrySet() 方法获取哈希表的键值对集合,然后使用循环来遍历这个集合。

for (Map.Entry<KeyType, ValueType> entry : hashMap.entrySet()) {KeyType key = entry.getKey();ValueType value = entry.getValue();// 处理键值对
}

注3:charAt(i) 是 Java 字符串类 String 的一个方法,用于返回字符串中指定索引位置处的字符。

String str = "Hello";
char ch1 = str.charAt(0);  // 获取第一个字符,即 'H'
char ch2 = str.charAt(1);  // 获取第二个字符,即 'e'
char ch3 = str.charAt(4);  // 获取第五个字符,即 'o'System.out.println(ch1);  // 输出:H
System.out.println(ch2);  // 输出:e
System.out.println(ch3);  // 输出:o

3.思路和例子
用滑动窗口的方法,定义一个左指针和右指针,然后指向字符串的起始位置。
4.代码实现

class Solution {public int lengthOfLongestSubstring(String s) {//哈希表用来存储每个字符最后出现的位置HashMap<Character,Integer> charIndex=new HashMap<>();int maxLength=0;int start=0;//从起始位置开始的指针//i是当前字符的索引的位置for(int i=0;i<s.length();i++){char c=s.charAt(i);//c是当前索引的字符//  if(charIndex.containsKey(c)&&charIndex.getKey(c)>=start)//错的原因是hashmap里面的方法只有对象.get(key),这边c就是key,get(key)得到索引值valueif(charIndex.containsKey(c)&&charIndex.get(c)>=start){start=charIndex.get(c)+1;}charIndex.put(c,i);//这行代码将当前字符 c 的最后出现位置更新为当前的索引 i。这样,我们就始终保持了 charIndex 中存储的是每个字符的最后出现位置。int currLength=i-start+1;//更新当前的最长长度//这行代码计算当前的最长子串的长度。i - start + 1 表示当前字符的索引与起始位置之间的距离加一,即当前子串的长度。这个长度表示的是从起始位置到当前位置的子串长度,这个子串保证不包含重复字符。// int changdu=Math.max(maxLength,currLength);maxLength=Math.max(maxLength,currLength);//I: maxLength 存储的就是字符串中的最长无重复字符子串的长度//I:这边再进行比较是因为要符合最长不重复字符....//这行代码用于更新 maxLength,确保其存储的是字符串中的最长无重复字符子串的长度。因为我们要找到的是整个字符串中的最长子串,所以需要在每次迭代时更新 maxLength,以保证其存储的是最大的长度值。//I:abccab 第一次是ab,第二次也是ab ;//在遍历字符串的过程中动态更新最长无重复字符子串的长度,并确保 maxLength 中存储的是最大的长度值。}return maxLength;}
}

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

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

相关文章

结构体联合体枚举和位段

文章目录 结构体结构体类型的声明特殊的声明 结构的自引用结构体变量的定义和初始化结构体内存对齐为什么要内存对齐结构体传参结构体实现位段&#xff08;位段的填充&可移植性&#xff09;位段位段的内存分配空间如何开辟位段的跨平台问题位段的应用 枚举枚举类型的定义枚…

Pyqt5中,QGroupBox组件标题字样(标题和内容样式分开设置)相对于解除继承

Python代码示例&#xff1a; import sys from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QGroupBox, QLabelclass MyApp(QWidget):def __init__(self):super().__init__()# 创建一个 QVBoxLayout 实例layout QVBoxLayout()# 创建 QGroupBox 实例self.grou…

微信小程序原生<map>地图实现标记多个位置以及map 组件 callout 自定义气泡

老规矩先上效果图: 1 、在pages文件夹下新建image文件夹用来存放标记的图片。 2、代码片段 也可以参考小程序文档:https://developers.weixin.qq.com/miniprogram/dev/component/map.html index.wxml代码 <mapid="map"style="width: 100%; height:100%;&…

ARM汇编与逆向工程:蓝狐卷基础知识

与传统的CISC&#xff08;Complex Instruction Set Computer&#xff0c;复杂指令集计算机&#xff09;架构相比&#xff0c;Arm架构的指令集更加简洁明了&#xff0c;指令执行效率更高&#xff0c;能够在更低的功耗下完成同样的计算任务&#xff0c;因此在低功耗、嵌入式等领域…

[嵌入式系统-39]:龙芯1B 开发学习套件 -10-PMON启动过程Sstart.S详解

目录 一、龙芯向量表与启动程序的入口&#xff08;复位向量&#xff09; 1.1 复位向量&#xff1a; 1.2 代码执行流程 1.3 计算机的南桥 VS 北桥 二、PMON代码执行流程 三、Start.S详解 3.1 CPU初始化时所需要的宏定义 &#xff08;1&#xff09;与CPU相关的一些宏定义…

2024人工智能四大趋势→

2023年&#xff0c;世人见证了ChatGPT在全球范围的大火。以生成式人工智能为代表的新一代人工智能问世&#xff0c;改变了人工智能&#xff08;AI&#xff09;技术与应用的发展轨迹&#xff0c;加速了人与AI的互动进程&#xff0c;是人工智能发展史上的新里程碑。2024年&#x…

皂液器问卷调查

媳妇非要买这种皂液器&#xff0c;来问问友友们有用过的帮忙识别一下是否是真的好用&#xff1a;皂液器问卷调查 4个题

SMART PLC 卷径计算(圈数检测+膜厚叠加法)

1、卷径计算(膜厚叠加+数值积分器应用博途PLC SCL代码) https://rxxw-control.blog.csdn.net/article/details/136719982https://rxxw-control.blog.csdn.net/article/details/1367199822、膜厚叠加法 https://rxxw-control.blog.csdn.net/article/details/128600466

[题解]无厘头题目——无聊的军官

这道题非常无厘头&#xff01; 题目描述&#xff1a; 每个学年的开始&#xff0c;高一新生们都要进行传统的军训。今年有一个军训教官十分奇怪&#xff0c;他为了测试学员们的反应能力&#xff0c;每次吹哨后学员们都会变换位置。每次左数第I位学员都会站到第ai个位置&#x…

60种常用可视化图表的使用场景——(上)

文章目录 1、点阵图 2、点数图 3、弧线图 4、折线图 5、平行坐标图 6、网络图 7、象形图 8、直方图 9、密度图 10、人口金字塔 11、条形图 12、多组条形图 13、堆叠式条形图 14、不等宽柱状图 15、面积图 16、比例面积图 17、堆叠式面积图 18、量化波形图 19、雷达图 20、桑基图…

P8665 [蓝桥杯 2018 省 A] 航班时间:格式问题

题目链接&#xff1a; P8665 [蓝桥杯 2018 省 A] 航班时间 哎&#xff0c;这道题做了很长时间还是做错了&#x1f940; 代码 #include<iostream> #include<algorithm> using namespace std; int get() {int h1,m1,s1,h2,m2,s2,day0;scanf("%d:%d:%d %d:%d:…

重学SpringBoot3-整合SSM

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 重学SpringBoot3-整合SSM Spring Boot整合SSM示例1. 创建Spring Boot项目2. 配置数据源3. 配置MyBatis4. 实现数据访问对象&#xff08;DAO&#xff09;5. 编写服务层和控…

Tiktok在线网页版和Tiktok安卓解锁版教程(Tiktok免登录国内直接看)

TikTok和抖音作为众所周知的一对兄弟&#xff0c;所开创的市场前景不可估量。它们不仅颠覆了很多传统认知&#xff0c;也直接让更多人接受了这些新奇事物。然而&#xff0c;TikTok的版本受限于国外&#xff0c;需要特定网络环境&#xff0c;一旦识别为国内&#xff0c;将无法使…

18.古今成大事者,必以多选替身为第一要义——代理模式详解

“杏市而外&#xff0c;尚有何人可以分统?亦须早早提拔。办大事者以多多选替手为第一义&#xff0c;满意之选不可得&#xff0c;姑节取其次&#xff0c;以待徐徐教育可也。 ——曾国藩同治元年四月十二日” 一言 代理模式核心思想是为对象提供一个替身&#xff0c;以控制对这…

JDK8和JDK11在Ubuntu18上切换(解决nvvp启动报错)

本文主要介绍JDK8和JDK11在Ubuntu18上切换&#xff0c;以供读者能够理解该技术的定义、原理、应用。 &#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;计算机杂记 &#x1f380;CSDN主页 发狂的小花 &#x1f304;人…

王道机试C++第8章递归与分治 Day35和蓝桥杯两道真题程序

第 8 章 递归与分治 递归是指&#xff1a;函数直接或间接调用自身的一种方法&#xff0c;通常可把一个复杂的大型问题层层转化为与原问题相似但规模较小的问题来求解。 递归策略只需少量的程序就可描述解题过程所需的多次重复计算&#xff0c;因此大大减少了程序的代码量。 8.…

Nacos安装与集群搭建

Nacos安装与集群搭建 Nacos安装指南1.Windows安装1.1.下载安装包1.2.解压1.3.端口配置1.4.启动1.5.访问 2.Linux安装2.1.安装JDK2.2.上传安装包2.3.解压2.4.端口配置2.5.启动 3.Nacos的依赖Nacos集群搭建1.集群结构图2.搭建集群2.1.初始化数据库2.2.配置Nacos2.3.启动2.4.nginx…

ts的interface和type区别

1. 场景 interface 是用来描述对象类型的结构&#xff0c;可以定义对象的属性名和属性值的类型&#xff0c;也可以定义函数类型。interface User {name: string;age: number;sayHello(): void; } const user: User {name: "",age: 2,sayHello() {...} }可以用这个U…

mysql 更新时,旧值与新值相同会怎么做?

文章目录 1 问题描述2 验证2.1 验证猜想12.2 验证猜想2 3 结论4 mysql 为什么这么设计呢&#xff1f; 1 问题描述 创建一张表t&#xff0c;插入一行数据 mysql> CREATE TABLE t ( id int(11) NOT NULL primary key auto_increment, a int(11) DEFAULT NULL ) ENGINEInnoDB…

Nexus 部署使用

1. 简介 Nexus是Maven仓库管理器&#xff0c;也可以叫Maven的私服&#xff0c;是私服的一种。Nexus是一个强大的Maven仓库管理器&#xff0c;它极大地简化了自己内部仓库的维护和外部仓库的访问。利用Nexus你可以只在一个地方就能够完全控制访问和部署在你所维护仓库中的每个A…