最长无重复数组 一、题目描述二、套用模板 一、题目描述 leetcodeOJ链接 :最长无重复数组 二、套用模板 滑动窗口模板介绍: 滑动窗口技巧介绍代码实现 class Solution { public int lengthOfLongestSubstring(String s) { HashMap<Character,Integer> map=new HashMap<>(); int left=0; int right=0; int res=0; char ch[]=s.toCharArray(); while(right<s.length()){ if(!map.containsKey(ch[right])){ map.put(ch[right],right); right++; }else{ while(map.containsKey(ch[right])){ map.remove(ch[left]); left++; } } res=Math.max(res,right-left); } return res; } } 解题思路: 1.这就是变简单了,连 need 和 valid 都不需要,⽽且更新窗⼝内数据也只需要简单的更新计数器 window 即可。 2.第一个更新窗口条件: 是map窗口中没有就进入窗口,right++ 3.反之,当map中已经有当前值时,缩小窗口直到窗口中没有right所对应得值. 4.res:记录最长无重复数组的长度,每确定一个窗口需要取当前窗口长度与原来res的最大值.