题解 | #固定字符出现最大次数#
固定字符出现最大次数
https://www.nowcoder.com/practice/73cc3e22a6ea4d00846f53384e4a6915
知识点
字符串,哈希
解题思路
利用哈希表来存放t中所有的字符,利用max来记录在s中k个单位内的满足要求的字符个数。
首先遍历s的前k个字符,初始化max数量,再遍历s的k到n下标的字符,如果当前下标i的字符再map中,则max加一,如果之前i-k下标的字符在map中,则把max减一,这样max就一直记录的时k单位内的个数。再定义ans取max从始至终的最大值。
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 n = s.length(), m = t.length(); Map<Character,Integer> map = new HashMap<>(); int ans = 0; int max = 0; for(int i = 0; i < m; i++){ map.put(t.charAt(i),0); } for(int i = 0; i < k; i++){ if(map.containsKey(s.charAt(i))){ ans = ans + 1; max = max + 1; } } for(int i = k; i < n;i++){ if(map.containsKey(s.charAt(i - k))){ max = max - 1; } if(map.containsKey(s.charAt(i))){ max = max + 1; ans = Math.max(ans,max); } } return ans; } }