滑动窗口法——子串相关问题

滑动窗口算法框架

567 m判断s中是否包含t的字母异位子串/438 m找到s中所有的t的字母异位子串/76 h找到s中包含t所有字母的最小子串/3 m找到s中无重复字符最小子串

void slidingWindow(string s, string t) {
    Map<Character, Integer> need = new HashMap<>();
    Map<Character, Integer> window= new HashMap<>();
    for (char c : t.toCharArray()) need.put(c,need.getOrDefault(c,0)+1);
    
    int left = 0, right = 0;
    int valid = 0; 
    while (right < s.length()) {
        // c 是将移入窗口的字符
        char c = s.charrAt(right);
        // 右移窗口
        right++;
        // 进行窗口内数据的一系列更新
        ...

        /*** debug 输出的位置 ***/

        
        // 判断左侧窗口是否要收缩
        while (window needs shrink) {
            // d 是将移出窗口的字符
            char d = s.charAt(left);
            // 左移窗口
            left++;
            // 进行窗口内数据的一系列更新
            ...
        }
    }
}

参考labuladong给出的框架

posted @ 2024-07-28 02:02  狠狠赚一笔  阅读(2)  评论(0编辑  收藏  举报