3. 无重复字符的最长子串

3. 无重复字符的最长子串 - 力扣(LeetCode)

给定一个字符串 s ,请你找出其中不含有重复字符的 最长
子串
的长度。

滑动窗口的一种算法模板


//外层循环扩展右边界,内层循环扩展左边界
for (int l = 0, r = 0 ; r < n ; r++) {
	//当前考虑的元素
	while (l <= r && check()) {//区间[left,right]不符合题意
        //扩展左边界
    }
    //区间[left,right]符合题意,统计相关信息
}

本题套用模板

    public int lengthOfLongestSubstring(String s) {
        char[] cs = s.toCharArray();
        int max = 0;
        Set<Character> set = new HashSet<>();
        for(int l = 0 , r = 0 ; r < cs.length ; r++){
            char c = cs[r];
            while(set.contains(c)){
                set.remove(cs[l]);
                l++;
            }
            set.add(c);
            max = Math.max(max,r-l+1);
        }
        return max;
    }