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/

相关推荐
何包蛋H30 分钟前
分布式锁(防止同时操作同一条数据)实现分析
java·开发语言·分布式锁
OT.Ter33 分钟前
【力扣打卡系列】移动零(双指针)
算法·leetcode·职场和发展·go
其实吧333 分钟前
基于MATLAB的运动车辆跟踪检测系统
开发语言·matlab
程序猿麦小七34 分钟前
基于springboot的音乐网站的设计与实现(源码+lw+调试)
java·spring boot·后端·音乐网站
猫爪笔记1 小时前
JAVA基础:数组 (习题笔记)
java·开发语言·笔记·学习
£suPerpanda2 小时前
蓝桥杯第21场小白入门赛补题
数据结构·c++·算法·蓝桥杯
Ares-Wang3 小时前
ASP.NET Core 路由规则,自定义特性路由 ,IActionConstraint 路由约束 总结 mvc
后端·asp.net·mvc
尘浮生3 小时前
Java项目实战II基于Spring Boot的智慧生活商城系统的设计与实现(开发文档+数据库+源码)
java·开发语言·数据库·spring boot·mysql·maven·生活
暂时先用这个名字3 小时前
常见 HTTP 状态码分类和解释及服务端向前端返回响应时的最完整格式
前端·后端·网络协议·http·状态码·国产化·响应
工作不忙4 小时前
关于SwitchCase中变量定义及使用变量的一些注意事项参数传递参数时不能实现多态动态绑定的问题c++语法
开发语言·c++·windows·开源·开源软件