算法-滑动窗口

2022/1/2 11:07:40

本文主要是介绍算法-滑动窗口,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

左神 

给你一个字符串s  一个字符串t

返回s中涵盖t所有字符的最短子串

class Solution {

    int f(String s, String t) {
        //1
        int ans = Integer.MAX_VALUE;
        char[] chs = s.toCharArray();
        char[] cht = t.toCharArray();
        int[] debt = new int[256];
        for (int i = 0; i < t.length(); i++) {
            debt[cht[i]]++;
        }
        int debtSum = t.length();
        int l = 0, r = 0;
        //2
        while (r < s.length()) {
            //r++ util fill
            while (debtSum > 0) {
                debt[chs[r]]--;
                if (debt[chs[r]] >= 0)
                    debtSum--;
                r++;
            }
            //l++ util miniest fill
            while (debtSum <= 0) {
                debt[chs[l]]++;
                if (debt[chs[l]] > 0) {
                    ans = Math.min(ans, r - l + 1);
                    debtSum++;
                }
                l++;
            }
        }
        return ans;
    }

}

 



这篇关于算法-滑动窗口的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程