首先,我们检查当前字符是否已经存在于seen集合中,即if s[end] in seen。如果是,则说明出现了重复字符。 如果出现了重复字符,我们需要移动start指针到重复字符的下一个位置。为了实现这一点,我们使用seen.index(s[end])找到重复字符的索引,然后将其加 1,即seen.index(s[end]) + 1,并将start指针更新为这个值。
这个代码首先检查字符串是否为空,如果为空,那么返回0。然后创建一个哈希表用来存储字符和它们在字符串中最后出现的位置。 我们通过遍历字符串,然后每次检查当前字符是否在哈希表中,如果在,就更新左边界。然后我们将当前字符和其位置放入哈希表中。 最后我们更新最大长度为当前索引减去左边界的长度再加1(即...
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例2: 输入: s = "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 示例3: 输入: s = "pwwk...
题解: 就是在一个字符串中,子串中没有重复的字符 例如:abda,那么最长是abd,bda都可以 解题图解: 采用双指针进行操作 代码 intlength =s.length(); List<Character> list =newArrayList<>();intleft =0;intslength =0;intkeylength =0; HashMap<Character, Integer> map =newHashMap<>();for(inti =0...
世上唯一不能复制的是时间,唯一不能重演的是人生,唯一不劳而获的是年龄。该怎么走,过什么样的生活,全凭自己的选择和努力。人生很贵,请别浪费!与智者为伍,与良善者同行。给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文 ...
给定一个字符串 `s` ,请你找出其中不含有重复字符的 **最长子串** 的长度。,classSolution{publicintlengthOfLongestSubstring(Strings){if(s.length()==0)return0;Map<Character,Integer>map=newHashMap<Character,Intege...
if(map.containsKey(s.charAt(i))){ left = Math.max(left,map.get(s.charAt(i))+1); } map.put(s.charAt(i),i); maxlen = Math.max(maxlen,i-left+1); } return maxlen; } } /HashMap数据结构 用了get,put,加入映射。containskey发现map中是否存在对应的key ...