classSolution{ publicintlengthOfLongestSubstring(String s){ int length = s.length(); int left = 0; int right = 0; int maxSize = 0; // 存放连续的字符,排除重复字符 Set<Character> chars = new HashSet<>(); while (right < length && left < length){ if (!chars.contains(s.charAt(right))){ // 添加字符,扩大窗口,计算当前最大长度 chars.add(s.charAt(right++)); maxSize = Math.max(maxSize, right - left); }else{ // 删除最前面的字符,缩小窗口 chars.remove(s.charAt(left++)); } } return maxSize; } }
classSolution{ publicintlengthOfLongestSubstring(String s){ int n = s.length(), ans = 0; Map<Character, Integer> map = new HashMap<>(); for (int left = 0, right = 0; right < n; right++) { if (map.containsKey(s.charAt(right))) { // 左指针跳过重复元素前面的元素 left = Math.max(map.get(s.charAt(right)), left); } ans = Math.max(ans, right - left + 1); map.put(s.charAt(right), right + 1); } return ans; } }