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

固定字符出现最大次数

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

知识点

字符串,滑动窗口

思路

需要在s字符串中,滑动得到长度为k的字符串ss,并且判断t的每一位字符在ss中出现的次数。

我们可以使用stl中的map来维护和存储ss和t的每一位字符个数,伴随着窗口滑动,ss的映射随之改变,然后依次判断当前情况下的字符出现个数,并更新答案即可

代码c++

class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param s string字符串
     * @param k int整型
     * @param t string字符串
     * @return int整型
     */
    int maxCount(string s, int k, string t) {
        // write code here
        map<int, int>ss;
        map<int, int>tt;
        for (int i = 0; i < k; i++) {//初始化长度为k的字符串的各个字符出现次数
            ss[s[i] - 'a']++;
            cout << ss[s[i] - 'a'] << endl;
        }
        int ans = 0;
        for (int i = 0; i < t.size(); i++) {//初始化字符串t的各个字符出现次数

            tt[t[i] - 'a']++;
            
        }
        for (auto v : tt) {//初始化答案

           if(v.second>=1)ans+=ss[v.first];
        }
        for (int i = k; i < s.size(); i++) {
            ss[s[i - k] - 'a']--;
            ss[s[i] - 'a']++;//窗口滑动,更新变化的两位的字符出现数
            
            int anss = 0;
            for (auto v : tt) {//遍历字符串t,判断每一位的出现次数

               if(v.second>=1)anss+=ss[v.first];
            }
            ans = max(ans, anss);//更新答案
            
        }

        return ans;

    }
};
全部评论

相关推荐

不愿透露姓名的神秘牛友
11-24 20:55
阿里国际 Java工程师 2.7k*16.0
程序员猪皮:没有超过3k的,不太好选。春招再看看
点赞 评论 收藏
分享
10-28 11:04
已编辑
美团_后端实习生(实习员工)
一个2人:我说几个点吧,你的实习经历写的让人觉得毫无含金量,你没有挖掘你需求里的 亮点, 让人觉得你不仅打杂还摆烂。然后你的简历太长了🤣你这个实习经历看完,估计没几个人愿意接着看下去, sdk, 索引这种东西单拎出来说太顶真了兄弟,好好优化下简历吧
点赞 评论 收藏
分享
贺兰星辰:不要漏个人信息,除了简历模板不太好以外你这个个人简介是不是太夸大了...
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务