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

京公网安备 11010502036488号