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

固定字符出现最大次数

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;

    }
};
全部评论

相关推荐

字节一直是我的白月光,考虑到转正还是拒了日常实习。
从今天开始狠狠卷JV...:为什么你释放的offer没流到我头上
点赞 评论 收藏
分享
门口唉提是地铁杀:之前b站被一个游戏demo深深的吸引了。看up主页发现是个初创公司,而且还在招人,也是一天60。二面的时候要我做一个登录验证和传输文件两个微服务,做完要我推到github仓库,还要我加上jaeger和一堆运维工具做性能测试并且面试的时候投屏演示。我傻乎乎的做完以后人家跟我说一句现在暂时不招人,1分钱没拿到全是白干
你的秋招第一场笔试是哪家
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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