题解 | #固定字符出现最大次数#
固定字符出现最大次数
https://www.nowcoder.com/practice/73cc3e22a6ea4d00846f53384e4a6915
知识点:滑动窗口、
思路:首先,我们创建一个长度为 26 的整型数组 cnt,用于记录字符串 s 中每个字母的出现次数。
res 为 0。s,在每个位置上更新 cnt 数组。对于当前位置 i,我们将 s.charAt(i) - 'a' 对应的计数值加 1。k(即 i >= k),我们需要将窗口左端所在的字符对应的计数值减 1,以保持窗口的大小为 k。k 时(即 i >= k - 1),我们遍历字符串 t 中的每个字符 c,累加 cnt[c - 'a'] 的值。这个累加结果即为窗口中包含字符串 t 的数量。sum 与当前的最大值 res 进行比较,取较大值作为新的 res 值。res。编程语言: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) {
int[] cnt = new int[26];
int res = 0;
for (int i = 0; i < s.length(); i++) {
cnt[s.charAt(i) - 'a'] += 1;
if (i >= k) cnt[s.charAt(i - k) - 'a'] -= 1;
if (i >= k - 1) {
int sum = 0;
for (char c : t.toCharArray()) {
sum += cnt[c - 'a'];
}
res = Math.max(res, sum);
}
}
return res;
}
}


