题目
题解
方法
public static int lengthOfLongestSubstring(String s) {HashSet<Character> charSet = new HashSet<Character>();int i = 0,l=0,max=0;for (int j = 0; j < s.length(); j++) {while (charSet.contains(s.charAt(j))) {charSet.remove(s.charAt(l));l++;}charSet.add(s.charAt(j));max = Math.max(max, j+1-l);}return max;}
滑动窗口
开始时左右指针都从0开始移动, 左侧指针固定,移动右侧指针,当窗口内最右侧的字符在set中存在时,左侧指针移动并从set中移除原左侧指针对应的字符,这样再取窗口长度的最大值即可
使用 while 是左指针删除最左侧字符,直到删除到重复字符停止(形象的比喻是滑动)。