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

固定字符出现最大次数

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 山西

相关推荐

秋招投简历提醒助手:个人经验是,一般面二十场左右就会进入侃侃而谈阶段。我今年七月末的时候开始的第一次面试,都是很多不会,回复很慢。后面慢慢迭代,到九月中的时候基本上面啥说啥,很放松的状态
远程面试的尴尬瞬间
点赞 评论 收藏
分享
程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
秋招吐槽大会
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务