Rust 力扣 - 1297. 子串的最大出现次数

文章目录

题目描述

题解思路

越短的子串出现的次数越多,我们只需要求某个长度为min_size的子串出现的次数,并且该子串中不重复字符小于等于max_letters的数量

遍历长度长度为min_size的子串,然后将不重复字符小于等于max_letters的子串加入哈希表中计数

然后返回哈希表中满足约束条件的子串的数量最大值

题解代码

rust 复制代码
use std::collections::HashMap;

impl Solution {
    pub fn max_freq(s: String, max_letters: i32, min_size: i32, max_size: i32) -> i32 {
        let cs = s.as_bytes();
        let mut map = HashMap::new();

        let mut win = HashMap::new();

        for i in 0..min_size as usize {
            win.insert(cs[i], i);
        }

        if win.len() <= max_letters as usize {
            map.insert(&s[0..min_size as usize], 1);
        }

        for i in min_size as usize..cs.len() {
            if let Some(start) = win.get(&cs[i - min_size as usize]) {
                if start <= &(i - min_size as usize) {
                    win.remove(&cs[i - min_size as usize]);
                }
            }

            win.insert(cs[i], i);
            if win.len() <= max_letters as usize {
                if let Some(count) = map.get_mut(&s[i - min_size as usize + 1 .. i + 1]) {
                    *count += 1;
                } else {
                    map.insert(&s[i - min_size as usize + 1 .. i + 1], 1);
                }
            }
        }

        let mut ans = 0;

        for (_, v) in &map {
            ans = ans.max(*v);
        }

        return ans;
    }
}

题目链接

https://leetcode.cn/problems/maximum-number-of-occurrences-of-a-substring/

相关推荐
好学且牛逼的马几秒前
【手写Easy-Spring|1】
java·后端·spring
今天多喝热水3 分钟前
Lua脚本实现滑动窗口
java·开发语言·lua
Grassto4 分钟前
HTTP请求超时?大数据量下的网关超时问题处理方案,流式处理,附go语言实现
后端·http·golang·go
没有bug.的程序员4 分钟前
Spring Cloud Gateway:API网关限流与熔断实战
java·开发语言·数据库·spring boot·gateway·api·springcloud
爱学习的阿磊5 分钟前
C++代码动态分析
开发语言·c++·算法
Paul_09207 分钟前
golang编程题2
开发语言·后端·golang
WWZZ20257 分钟前
C++:STL(容器deque)
开发语言·c++·算法·大模型·具身智能
AI科技星7 分钟前
加速运动正电荷产生加速度反向引力场的详细求导过程
人工智能·线性代数·算法·机器学习·矩阵·概率论
近津薪荼7 分钟前
优选算法——双指针专题3(快慢双指针)
c++·学习·算法
草莓熊Lotso8 分钟前
Linux 进程等待与程序替换全解析:从僵尸进程防治到 exec 函数实战
linux·运维·服务器·开发语言·c++·人工智能·python