题解 | #固定字符出现最大次数#

固定字符出现最大次数

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;
    }
}

全部评论
思路挺好的 , map可以换成set
点赞 回复 分享
发布于 2023-10-08 21:04 山西

相关推荐

冲芭芭拉鸭:你这图还挺新,偷了。
投递美团等公司10个岗位
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务