剑指 Offer 48. 最长不含重复字符的子字符串
//滑动窗口法 class Solution { public int lengthOfLongestSubstring(String s) { Map<Character,Integer> map = new HashMap<>(); //最长不重复子串的长度 int res = 0; //滑动窗口的左边界 int left = -1; //开始滑动 for(int right = 0; right < s.length();right++){ //如果map中已记录了 右边界的元素,说明重复了,更新左边界left if(map.containsKey(s.charAt(right))){ left = Math.max(left,map.get(s.charAt(right))); } //哈希表 记录字符及其对应的下标 map.put(s.charAt(right),right); //结果集更新 res = Math.max(res,right - left); } return res; } }