无重复字符的最长字串

news/2023/5/28 7:00:44

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。

示例 1:输入: s = "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。


示例 2:输入: s = "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。


示例 3:输入: s = "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
     请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
 

提示:0 <= s.length <= 5 * 104
s 由英文字母、数字、符号和空格组成

思路:本题用到了滑动窗口的思想。采用两个指针,分别指向子串的左右端,然后检查不重复的字符。向右遍历字符,如果遍历到的新字符不存在于当前子串中,就把右指针向右滑动,如果有重复了,就从子串中找和他重复的那个字符,把左指针放到找到的这个字符的后面。

对于abcabcbb字符串来说,首先左指针指向a, 右指针也指向a。然后往后找,右指针指向b, 不重复,继续,右指针指向c, 不重复,继续。右指针指向a,发现重复了。此时子串是abca, 此时应该把左指针移到第一个a的后面,也就是b的位置,此时子串就不重复了,继续,右指针指向b,此时子串是bcab,又重复了,左指针应该指向c。然后再继续……

代码一:

package text11;import java.util.HashMap;
public class Solution {public static int lengthOfLongestSubstring(String s) {if (s.length()==0) return 0;HashMap<Character, Integer> map = new HashMap<Character, Integer>();int max = 0;int left = 0;for(int i = 0; i < s.length(); i ++){if(map.containsKey(s.charAt(i))){//containsKey() 方法检查 hashMap 中是否存在指定的 key 对应的映射关系。//string.charAt方法返回指定索引处的char值。left = Math.max(left,map.get(s.charAt(i)) + 1);}map.put(s.charAt(i),i);max = Math.max(max,i-left+1);}return max;}public static void main(String args[]) {String ss="abcabcbb";int aa= lengthOfLongestSubstring(ss);System.out.print(aa);}
}

代码二:

package text11;public class Solution {	public static int lengthOfLongestSubstring1(String s) {if (s.length() < 2) return s.length();int flag=0;//子串起始位置int max = 0;int len = 0;for (int i = 0; i < s.length(); i++) {int index = s.indexOf(s.charAt(i),flag);//s.indexOf从flag位置处开始检索s.charAt(i)字符,返回他的位置。if(index < i){//从flag开始 出现了重复字符if(max<len){//记录lenmax = len;}flag = index+1;//记录子串起始位置len = i-flag+1;//重新计算字串长度}else{len++;}}return len>max?len:max;//若最后一个子串没有出现重复字符就需要判断}public static void main(String args[]) {String ss="abcabcbb";int aa= lengthOfLongestSubstring1(ss);System.out.print(aa);}
}

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

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

java基本数据类型对象包装类

java基本数据类型对象包装类 一、包装类说明 为了方便操作基本数据类型值&#xff0c;将其封装成了对象&#xff0c;在对象中定义了属性和行为丰富了该数据的操作。用于描述该对象的类就称为基本数据类型对象包装类。 基本数据类型与相应的包装类 byte Byte sh…

项目经验不多时如何在简历中包装自己?

分享一下我老师大神的人工智能教程&#xff01;零基础&#xff0c;通俗易懂&#xff01;http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。分享知识&#xff0c;造福人民&#xff0c;实现我们中华民族伟大复兴&#xff01;题目来自于论坛一个讨论中的话题如何在简历中…

包装自己-如何做一个骗子

在一个偶然的瞬间&#xff0c;发现了网上发的菲律宾it骗局&#xff0c;从而引发出培训机构的人头倒卖和不负责任&#xff0c;另外看到一份杀猪攻略。 杀猪盘&#xff0c;不只是it行业&#xff0c;是“从业者们”自己起的名字&#xff0c;是指放长线“养猪”诈骗&#xff0c;养得…

HTML5+CSS3小实例:炫彩的发光字特效

前言&#xff1a; 今天我们向大家精选了一款HTML5CSS3文字特效&#xff0c;文字特效有超酷的动画类型&#xff0c;不多说&#xff0c;一起来看看。 描述&#xff1a; 这款文字特效既有倒影的效果&#xff0c;又有随机的颜色&#xff0c;看起来非常的炫酷。全文基于 HTML5CSS3 完…

idea自定义导包个数不带*

背景 在开发过程中&#xff0c;一个类中业务可能会很复杂&#xff0c;需要导入很多包&#xff0c;但是idea同一个包下超过5个会自动默认设置为号(比如import com.blog.andy.api.dto.* ; )&#xff0c;这样其实是不好的&#xff0c;万一这个包下许多类&#xff0c;就会影响性能&…

23种设计模式(六)——装饰模式【单一职责】

文章目录 意图什么时候使用装饰真实世界类比装饰模式的实现装饰模式的优缺点亦称: 装饰者模式、装饰器模式、Wrapper、Decorator 意图 装饰者模式(Decorator Pattern)允许向一个现有的对象扩展新的功能,同时不改变其结构。主要解决直接继承下因功能的不断横向扩展导致子类…

idea如何设置导包不带*号

idea 如果没有设置 默认超过5个相同包的类就会变成 * 号&#xff0c; 这其实是很容易满足的&#xff0c;而且随着代码量的增多&#xff0c;我们往往不会去注意到顶部的导包代码。 当一个类导入的包太多时&#xff0c;往往会影响到整个工程的启动速度&#xff0c;增加缓存。 所…

IDEA自动导包设置,敲代码直接起飞

IDEA自动导包设置 今天在一个新电脑上配置环境&#xff0c;发现没有自动导包功能&#xff0c;我这边还是做一个记录吧。方便我日后查看&#xff0c;也方便大家查看。 在settings–》Editor–》General–》Auto Importw–》在java栏中勾选如下图中两个选项。 勾选完之后&…

IDEA中导包没有提示包问题的解决

今天魔力圆圈和大家分享一个关于idea中提示包用不了(用AltEnter不能导包&#xff0c;只能手打进行导包)&#xff0c;有一次我打代码时发现&#xff0c;我要导入注解的包怎么导入都没有用(需要手打进行导包)&#xff0c;我还以为我idea有问题&#xff0c;我又去创建了一个新的项…

IDEA从零到精通(33)之IDEA优化导包(自动导入包、删除包)

文章目录作者简介引言导航概述设置测试实例小结导航热门专栏推荐作者简介 作者名&#xff1a;编程界明世隐 简介&#xff1a;CSDN博客专家&#xff0c;从事软件开发多年&#xff0c;精通Java、JavaScript&#xff0c;博主也是从零开始一步步把学习成长、深知学习和积累的重要性…

java面向对象,全是对象,这么多对象2023015

面向对象&#xff08;一遍一遍的领悟&#xff09; Java支持面向对象的三大特征&#xff1a;封装、继承和多态&#xff0c; Java提供 了private、protected和public三个访问控制修饰符来实现良好的封装&#xff0c;提供了extends关键字来让子类继承父类&#xff0c;子类继承父类…

阿里来了一个“超级新星”

当我们向元宇宙迈进。 天下网商 贡晓丽 还有十来天就到中秋节&#xff0c;作为节日刚需的月饼已经占据各大网购平台的C位。而今年天猫&#xff0c;消费者不再像过去一样&#xff0c;购买常规的月饼礼盒&#xff0c;而是有机会收藏到一枚NFT (非同质代币)数字月饼。 数字月饼不…

阿里云上,盒马狂奔

四岁了&#xff0c;盒马依旧在加速狂奔。 2019年3月底&#xff0c;成都盒马高笋塘店开门迎客。这是成都的第12家盒马店&#xff0c;接踵摩肩的消费者热情依旧。一个统计&#xff0c;成都主城区的盒区房覆盖率全国第一&#xff0c;达到75%&#xff0c;服务小区数量超过9100个。…

你怎么看待《在今天这个故事里,阿里巴巴就是四十大盗》

想起去年阿里月饼门事件&#xff0c;今年又有人在各大社交平台发声《在今天这个故事里&#xff0c;阿里巴巴就是四十大盗》&#xff0c;以下是原文&#xff1a;不过这件事情&#xff0c;从模仿角度来说...毕竟互联网产品很多Idea都是互相抄袭&#xff0c;背锅最后都是工程师。天…

解读阿里巴巴集团的“大中台、小前台”组织战略

解读阿里巴巴集团的“大中台、小前台”组织战略 https://www.iyiou.com/p/92012.html 亿欧导读 ] 阿里的“中台战略” 不是一个简单的组织变革&#xff0c;还有业务变革、机制变革、技术架构变革的一次全面转型。 【编者按】阿里巴巴“大中台小前台”的中台战略的官方提法源自2…

【安全热点】阿里巴巴月饼门,观点两极化,孰对孰错?

【安全热点】阿里巴巴月饼门&#xff0c;观点两极化&#xff0c;孰对孰错&#xff1f; 本文来源&#xff1a;i春秋社区-分享你的技术&#xff0c;为安全加点温度 阿里巴巴五个技术人员在内网刷月饼被开除&#xff0c;在舆论中引起观点分化&#xff0c;几方观点各执一词难舍难分…

阿里巴巴成立达摩院,马云投入1000亿,但未来得靠自己挣钱

李根 发自 杭州 量子位 出品 | 公众号 QbitAI 马云不想再被人讲没有技术了。 阿里巴巴集团今日宣布成立承载“NASA计划”的实体组织——“达摩院”&#xff0c;一家研究基础科学和颠覆式技术创新的机构。 达摩院首批公布的研究领域包括&#xff1a;量子计算、机器学习、基础算法…

【阿里云 ACE上海同城会】6月3日参观阿里巴巴活动回顾

6月3日&#xff0c;ACE上海同城会的18位成员集体参观&#xff1a;杭州阿里巴巴西溪园区。 由于阿里巴巴门口不让太多人站着&#xff0c;我们只能简单的拍了一张合照。 阿里巴巴园区里湖景 在带有“Alibaba”字样的草坪集体拍了张合照&#xff0c;补上门口拍的不好那张&#xff…

阿里巴巴2015研发工程师笔试题,带答案

欢迎对本文提出补充建议&#xff0c;可以在以下平台上我留言。 个人博客站点&#xff1a;www.anycodex.com/blog/ Csdn博客站点&#xff1a;http://my.csdn.net/?reftoolbar 微博&#xff1a;http://weibo.com/1958069172/profile?topnav1&wvr5&user1 1、int main()…

2015年阿里巴巴研发工程师笔试题

1、int main(){ fork()||fork(); }共创建几个进程&#xff1f; 答&#xff1a;3个。 【知识点】 • 一个现有进程可以调用fork函数创建一个新进程。由fork创建的新进程被称为子进程&#xff08;child process&#xff09;。fork函数被调用一次但返回两次。两次返回的唯一区…