import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param s string字符串
     * @param k int整型
     * @param t string字符串
     * @return int整型
     */
    public int maxCount (String s, int k, String t) {
        // write code here
        Map<Character, Integer> map = new HashMap<>();
        Set<Character> set = new HashSet<>();
        for (int i = 0; i < t.length(); i++) {
            set.add(t.charAt(i));
        } 
        
        int count = 0;
        for (int i = 0; i < k; i++) {
            map.put(s.charAt(i), map.getOrDefault(s.charAt(i), 0) + 1);
            int total = 0;
            for (Character c : set) {
                total += map.getOrDefault(c, 0);
            }
            count = Math.max(count,total);
        }
       
        for (int i = k; i < s.length(); i++) {
            map.put(s.charAt(i), map.getOrDefault(s.charAt(i), 0) + 1);
            map.put(s.charAt(i - k), map.getOrDefault(s.charAt(i - k), 0) - 1);
            int total = 0;
            for (Character c : set) {
                total += map.getOrDefault(c, 0);
            }
            count = Math.max(count,total);
        }
        return count;
    }

}

本题考察的知识点主要是字符统计,所用编程语言是java。

我用一个哈希表统计字符串s前面k个字符的出现次数,然后看此时子字符串中可能包含的最大牛编号的出场次数,然后继续遍历字符串s其余的字符并更新哈希表中各个字符的出现次数,同时统计此时包含的最大牛编号的出现次数