Bootstrap

滑动窗口算法

在这里插入图片描述
将多循环问题改编为单循环问题把O(n2)->变成O(n)

在这里插入图片描述
滑动窗口为非就是一进二出三算:
滑动窗口算法分为两种
1.是将多余的部分remove掉
2.仅仅是移动left的值用于回复整个窗口的大小

//滑动窗口算法之一,定窗口
    public int lengthOfLongestSubstringKd(String s,int k){
   
        Map<Character,Integer> map =  new HashMap();//map是一个窗口,窗口中存放着有用的数据,没用的数据会被抛弃
        int left = 0,res = 0;
        //res是窗口要算的东西,比如窗口大小或者窗口内部最大值什么的
        for(int i = 0;i < s.length();i++){
   //字符串函数
            char cur = s.charAt(i);//取得每一位的数值
            map.put(cur,map.getOrDefault(cur,0) + 1);//如果这个数值没被存,那就存进去
            // ,v是1,如果这个数已经有了,那就把V加1
            while (map.size() > k){
   //长度指定,当长度满了的时候
                char c = s.charAt(left);//取出最左边的数
                map.put(c,map
;