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其余的字符并更新哈希表中各个字符的出现次数,同时统计此时包含的最大牛编号的出现次数