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

固定字符出现最大次数

https://www.nowcoder.com/practice/73cc3e22a6ea4d00846f53384e4a6915

知识点:字符串

题目已经给定了窗口大小k,我们只需要将窗口在字符串中遍历一遍,同时判断字符出现次数即可。具体来说,我们统计子字符串中的字符出现次数,同时,如果该字符也出现在t字符串中,则可以将其记录下来,表示当前子字符串中存在该字符,窗口向右滑动,将右边界字符出现次数加一,左边界字符出现次数减一,重复以上判断。

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[] cnt = new int[26];
        for(int i = 0; i < k; i++) {
            cnt[s.charAt(i) - 'a']++;
        }
        int max = getMax(cnt, t);
        int left = 0, right = k;
        while(right < s.length()) {
            cnt[s.charAt(right++) - 'a']++;
            cnt[s.charAt(left++) - 'a']--;
            max = Math.max(max, getMax(cnt, t));
        }
        return max;
    }

    private int getMax(int[] cnt, String t) {
        int num = 0;
        for(int i = 0; i < 26; i++) {
            if(!t.contains(String.valueOf((char) (i + 'a')))) {
                continue;
            }
            num += cnt[i];
        }
        return num;
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务