题解 | #固定字符出现最大次数#
固定字符出现最大次数
https://www.nowcoder.com/practice/73cc3e22a6ea4d00846f53384e4a6915
知识点:字符串
题目已经给定了窗口大小k,我们只需要将窗口在字符串中遍历一遍,同时判断字符出现次数即可。具体来说,我们统计子字符串中的字符出现次数,同时,如果该字符也出现在t字符串中,则可以将其记录下来,表示当前子字符串中存在该字符,窗口向右滑动,将右边界字符出现次数加一,左边界字符出现次数减一,重复以上判断。
Java题解如下
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 int[] cnt = new int[26]; for(int i = 0; i < k; i++) { cnt[s.charAt(i) - 'a']++; } int max = getMax(cnt, t); int left = 0, right = k; while(right < s.length()) { cnt[s.charAt(right++) - 'a']++; cnt[s.charAt(left++) - 'a']--; max = Math.max(max, getMax(cnt, t)); } return max; } private int getMax(int[] cnt, String t) { int num = 0; for(int i = 0; i < 26; i++) { if(!t.contains(String.valueOf((char) (i + 'a')))) { continue; } num += cnt[i]; } return num; } }