2021.12.19刷题笔记--滑动窗口系列

窗口的思路是存在一个窗口。满足条件,这时候改变窗口的大小,到不满足条件时,移动窗口的左边界限

int[] check = new int[size];
//左边界
int left =0;
//右边界
int right = 1;
//这个时候就已经初步创建了窗口
freq[in.0] = init;
//现在开始滑动窗口
ans = init;
while(right

套用公式
3. 无重复字符的最长子串

滑动窗口一道很典型的题。

int[] check = new int[127];
//左边界
int left =0;
//右边界
int right = 1;
//这个时候就已经初步创建了窗口
freq[s.charAt(0)] = 1;
//现在开始滑动窗口
ans = 1;
while(right0){
        //移动窗口使窗口合法
        check[s.charAt(left++)]--;
    }
    //这个时候窗口合法
    check[in.s.charAt(right)]++;
    ans = Math,max(ans,right-left+1);
    right++;
}
rerurn ans;

再用公式套用一个比较复杂的题目
30. 串联所有单词的子串

//窗口大小
HashSet validSet ;
    HashSet inValidSet ;
    public List findSubstring(String s, String[] words) {
        int size = words.length * words[0].length();
        int left = 0;
        int right = size - 1;
        List list = new ArrayList<>();
        validSet = new HashSet<>();
        inValidSet = new HashSet<>();
        while (right < s.length()) {
            while (right map = new HashMap<>();
        for (String word : words) {
            map.put(word, map.getOrDefault(word, 0) + 1);
        }
        while (left <= right) {
            String temp = s.substring(left, left + words[0].length());
            Integer freq = map.getOrDefault(temp, 0);
            if (freq > 0) map.put(temp, freq - 1);
            else {
                inValidSet.add(s);
                return false;
            }
            left += words[0].length();
        }
        validSet.add(s);
        return true;
    }

再比如,我们再套一道题
187. 重复的DNA序列
这个题目稍为简单

class Solution {
    public List findRepeatedDnaSequences(String s) {
        int left = 0;
        int right = 10;
        ArrayList resp = new ArrayList<>();
        HashMap map = new HashMap<>();
        while (right<=s.length()){
            String temp = s.substring(left, right);
            map.put(temp,map.getOrDefault(temp,0)+1);
            right++;
            left++;
        }
        for (String k : map.keySet()) {
            if (map.get(k) > 1) {
                resp.add(k);
            }
        }
        return resp;

    }
}

你可能感兴趣的:(数据结构)