Leetcode第三天之 无重复字符串的最长字串(3)

哈希集合

public static int lengthOfLongestSubstring(String s) {
        int n=s.length();
        Set<Character> set=new HashSet<>();
        //开始指针初始值设为-1,表示还没开始移动
        int start = -1,sum=0;
        for (int i=0;i<n;i++){
            if (i!=0)
                //一轮结束,找到了重复的数,开始从头删除重复的数
                //比如abcb 第一轮集合中存储了abc,发现了重复的b
                //之后一次删除,a、b,再一次满足while,继续进入循环
                set.remove(s.charAt(i-1));
            while(start+1<n&&!set.contains(s.charAt(start+1))){
                set.add(s.charAt(start+1));
                start++;
            }
            sum=Math.max(sum,start+1-i);
        }
        return sum;
    }

Leetcode第三天之 无重复字符串的最长字串(3)

学以致用:

remove:HashSet中移除add:HashSet中添加contains:HashSet中查询是否存在

匿名

发表评论

匿名网友