【3. 无重复字符的最长子串】
Leetcode算法练习 笔记记录
- 3. 无重复字符的最长子串
3. 无重复字符的最长子串
public int lengthOfLongestSubstring(String s) {if (s.length() == 1) {return 1;}Set<Character> set = new HashSet<>();int size = s.length();int max = 0;int left = 0;//其实算是一个滑动窗口的模板题目,我们可以用一个set来记录滑动窗口中的元素,然后每次遍历到重复的元素时,//就从set中删除重复的元素,然后把当前元素加入set中,这样我们就可以得到一个不重复的子串了,然后比较一下最长的子串长度,//然后继续遍历,直到遍历完字符串。for (int right = 0; right < size; right++) {char string = s.charAt(right);//删除已经重复的字符,并移动指针while (set.contains(string)) {set.remove(s.charAt(left));left++;}set.add(string);max = Math.max(max, right - left + 1);}return max;}