【LeetCode-中等题】3. 无重复字符的最长子串

题目

【LeetCode-中等题】3. 无重复字符的最长子串_第1张图片

题解一:单指针,滑动窗口

【LeetCode-中等题】3. 无重复字符的最长子串_第2张图片

思路:
设置一个左指针,来判断下一个元素是否在set集合中,如果不在,就加入集合,right继续++,如果在,就剔除重复的元素,计算串的长度,在执行上述操作
【LeetCode-中等题】3. 无重复字符的最长子串_第3张图片

代码:

    public int lengthOfLongestSubstring(String s) {

        Set<Character> set  = new HashSet<>();
        int right  = -1; //左侧滑动指针  ,更新窗口的开始位置
        int max = 0;
       int length= s.length();
        for(int i = 0 ; i<length ; i++){

        //如果set集合不包含right+1这个元素,则直接入集合,并且right+1要小于字符串长度
         while (right + 1 < length && !set.contains(s.charAt(right + 1))) {
                  set.add(s.charAt((right+1)));
                  right++;
        }
            max = Math.max(max,set.size()) ;
            set.remove(s.charAt(i));   

        }
        return max;

    }

你可能感兴趣的:(#,中等题,leetcode,算法,职场和发展)