力扣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://www.rhkb.cn/news/277243.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【 c 语言 】指针入门

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;C语言 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步&…

java SSM农产品订购网站系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM农产品订购网站系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采…

修改/etc/resolve.conf重启NetworkManager之后自动还原

我ping 百度报错&#xff1a; [rootk8snode1 ~]# ping baidu.com ping: baidu.com: Name or service not known很明显&#xff0c;这是DNS解析问题。 于是我修改 /etc/resolv.conf 文件后&#xff0c;执行完sudo systemctl restart NetworkManager&#xff0c;/etc/resolv.con…

【django framework】ModelSerializer+GenericAPIView,如何在提交前修改某些字段值

【django framework】ModelSerializerGenericAPIView&#xff0c;如何在提交前修改某些字段值 我们经常会遇到下面这种情况&#xff1a; 序列化器用的是ModelSerializer&#xff0c;写视图的时候继承的是generics.CreateAPIView。现在我想在正式提交到数据库(perform_create)之…

【Javase基础语法】String类常见的字符串操作方法

引言 个人主页&#xff1a;努力学编程-CSDN博客 学习领域&#xff1a;C语言进阶&#xff0c;javase基础语法 每日鸡汤&#xff1a;爱意随风起&#xff0c;人生不言弃 字符串的定义&#xff1a; public static void main(String[] args) { // 使用常量串构造 String s1 "h…

接口测试之文件下载

在工作中对于下载接口&#xff0c;经常会有这样的疑问&#xff1a;这类接口一般功能比较稳定&#xff0c;但是又比较重要&#xff0c;需要占用回归测试时间&#xff0c;有没有可替代的方式&#xff1f; 答案肯定是有的&#xff0c;可以从接口测试/UI自动化测试介入&#xff0c…

01——LenNet网络结构,图片识别

目录 1、model.py文件 &#xff08;预训练的模型&#xff09; 2、train.py文件&#xff08;会产生训练好的.th文件&#xff09; 3、predict.py文件&#xff08;预测文件&#xff09; 4、结果展示&#xff1a; 1、model.py文件 &#xff08;预训练的模型&#xff09; impor…

Navicat破解 Navicat下载安装 附教程 免费

百度网盘&#xff1a;https://pan.baidu.com/s/1wRRN_18_uXxPiIWCS4l43A 麻烦各位师傅帮忙填写一下问卷&#xff0c;提取码在问卷填写结束后显示~ 【https://www.wjx.cn/vm/mBBTTKm.aspx# 】 &#xff08;资料来源于网络&#xff0c;侵告删&#xff09;

ThreeJs 可视化大屏地图

效果图&#xff1a; 今天给各位提供一个可视化地图的案例和源码&#xff0c;关注下吧各位&#xff01;回复"大屏地图" 获取工程 1、案例分析&#xff1a;主要使用了UI 美工图片&#xff0c;然后获取地图的json 数据绘制图形&#xff0c;贴图使用该区域的地图纹理进行…

git push解决办法:! [remote rejected] prod -> prod (pre-receive hook declined)

今天想把最近改的东西上传到Gogs上发版一下子的&#xff0c;但是发现有冲突合并不了&#xff0c;于是我切回自己的分支合并了prod&#xff0c;把冲突处理了一下子&#xff0c;还又增加了一点修改&#xff0c;push后.......又回到prod进行git push&#xff0c;哦豁~这就出了问题…

编写测试用例的方法,这个是真的很好用

大家测试过程中经常用的等价类划分、边界值分析、场景法等&#xff0c;并不能覆盖所有的需求&#xff0c;我们之前讲过很少用到的因果图法&#xff0c;下面就来讲另一种不经常用到但又非常重要的测试用例编写方法——测试大纲法。 测试大纲法适用于有多个窗口&#xff0c;每个…

mysql主从复制/主从备份搭建

mysql主从复制/主从备份搭建 前言一、主从复制1&#xff09;为什么使用主从复制、读写分离&#xff1f;2&#xff09;主从复制原理 二、如何实现主从复制&#xff1f;1&#xff09;主库配置1、修改配置文件2、登录mysql&#xff1a; 2&#xff09;从库配置1、修改配置文件2、登…

前端之用HTML弄一个古诗词

将进酒 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>将进酒</title><h1><big>将进酒</big> 君不见黄河之水天上来</h1><table><tr><td ><img…

复现文件上传漏洞

一、搭建upload-labs环境 将下载好的upload-labs的压缩包&#xff0c;将此压缩包解压到WWW中&#xff0c;并将名称修改为upload&#xff0c;同时也要在upload文件中建立一个upload的文件。 然后在浏览器网址栏输入&#xff1a;127.0.0.1/upload进入靶场。 第一关 选择上传文件…

浅易理解:卷积神经网络(CNN)

浅易理解卷积神经网络流程 本文的目录&#xff1a; 1 什么卷积神经网络 2 输入层 3 卷积层 4 池化层 5 全连接层 传统的多层神经网络只有 输入层、隐藏层、输出层 卷积神经网络&#xff08;CNN)&#xff1a; 在多层神经网络的基础上&#xff0c;加入了更加有效的特征学习部分…

spacy进行简单的自然语言处理的学习

自然语言处理基本概念 概念&#xff1a;自然语言处理&#xff0c;是让机器理解人的语言的过程。 作用&#xff1a;通过使用自然语言处理&#xff0c;机器可以理解人的语言&#xff0c;从而进行语义分析&#xff0c;例如&#xff1a;从一句话中判断喜怒哀乐&#xff1b;从一段文…

汽车电子零部件(3):ADAS前视感知系统FLC

前言: 比如车道保持和车道改变这种场景,如何进行车道的识别,如何进行周围车辆的识别,这算是ADAS中的一个场景,其中就会用到FLC前视感知系统。还有比如前向物体识别,前向车辆识别等。 再往大里说那就是车联网了: 除了前向也可能有其他部位

opencv安装(C++)并配置vs

准备工作&#xff1a; 1.opencv安装包(此教程使用4.9) 2.visual studio(此教程使用vs2019) opencv安装&#xff1a; 1、下载opencv&#xff1a; 1.1 官网下载&#xff1a;Releases - OpenCV 1.2 百度网盘&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1NpEoFjbbyQJtFD…

【Java】List, Set, Queue, Map 区别?

目录 List, Set, Queue, Map 区别&#xff1f; Collection和Collections List ArrayList 和 Array区别&#xff1f; ArrayList与LinkedList区别? ArrayList 能添加null吗&#xff1f; ArrayList 插入和删除时间复杂度&#xff1f; LinkedList 插入和删除时间复杂度&…

【C++】string进一步介绍

个人主页 &#xff1a; zxctscl 如有转载请先通知 文章目录 1. 前言2. 迭代器2.1 反向迭代器2.2 const对象迭代器 3. Capacity3.1 size和length3.2 max_size3.3 capacity3.4 clear3.5 shrink_to_fit &#xff08;了解即可&#xff09;3.6 reserve3.7 resize 4. Element access4…