题解 | #固定字符出现最大次数#
固定字符出现最大次数
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; } }