知识点

滑动窗口

思路

首先需要维护一个大小为k的滑动窗口,并记录窗口中的字符。

之后每次计算在t中出现的字符的总字数并更新答案即可

时间复杂度 O(26n)

AC Code (C++)

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param s string字符串 
     * @param k int整型 
     * @param t string字符串 
     * @return int整型
     */
    int maxCount(string s, int k, string t) {
        vector<int> cnt(26, 0);
        int res = 0;
        for (int i = 0; i < s.size(); i ++) {
            cnt[s[i] - 'a'] += 1;
            if (i >= k) cnt[s[i - k] - 'a'] -= 1;
            if (i >= k - 1) {
                int sum = 0;
                for (auto x : t) sum += cnt[x - 'a']; 
                res = max(res, sum);
            }
        }
        return res;
    }
};