Given a string, find the length of the longest substring without repeating characters.
暴力破解
滑动窗口
设置左指针left和右指针right
置Map表示左指针和右指针之间的字母
右指针先走,把没有遇到过重复的字母加入Map中。记录长度
如果遇到已经在Map中的字母,则左指针走一步。 并从map中删除
直到右指针走到头。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
ublic intlengthOfLongestSubstring(String s){ int n = s.length(); Set<Character> set = new HashSet<>(); int ans = 0, i = 0, j = 0; while (i < n && j < n) { // try to extend the range [i, j] if (!set.contains(s.charAt(j))){ set.add(s.charAt(j++)); ans = Math.max(ans, j - i); } else { set.remove(s.charAt(i++)); } } return ans; }