失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > LeetCode:无重复字符的最长子串

LeetCode:无重复字符的最长子串

时间:2019-07-22 14:41:53

相关推荐

LeetCode:无重复字符的最长子串

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

示例一:

示例二:

示例三:

思路分析:

首先定义一个Set集合存储多个字符,同时定义一个右指针rk=-1,外层套一个循环定义左指针的初始位置,从0-s.length()-1,如果右指针右移一位后指向的元素不在集合中,且在字符串长度的范围内

,则将该字符串加入该字符集合,然后rk++,直至rk+1与集合中的元素重复则跳出循环,然后比较左右指针的跨度与max的大小,选择二者中较大的一个。比较完毕后,继续向右移动左指针的位置,继续上述的判断,但要注意,只要左指针不指向索引为0的位置,则需要首先移除集合中最左边的元素

代码展示:

class Solution {public int lengthOfLongestSubstring(String s) {//定义一个承载字符的集合Set<Character> set=new HashSet<>();int length = s.length();//右指针int rk=-1;int max=0;for (int i=0;i<length;i++){if(i!=0){//将集合中最左边的元素set.remove(s.charAt(i-1));}while(rk+1<length && !set.contains(s.charAt(rk+1))){set.add(s.charAt(rk+1));//右指针继续右移rk++;}max=Math.max(max,rk+1-i);}return max;}}

如果觉得《LeetCode:无重复字符的最长子串》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。