当前位置: 首页 > article >正文

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

文章目录

  • 题目描述
  • 题解思路
  • 题解代码
  • 题目链接

题目描述

在这里插入图片描述

题解思路

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

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

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

题解代码

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/


http://www.kler.cn/a/380346.html

相关文章:

  • HTTP 405 Method Not Allowed:解析与解决
  • Spring框架的事务管理
  • 如何对LabVIEW软件进行性能评估?
  • 用ChatGPT提升工作效率:从理论到实际应用
  • HTML 框架
  • vue系列==vue路由
  • 使用python爬取某新闻网并进行数据分析
  • 【论文阅读笔记】Wavelet Convolutions for Large Receptive Fields
  • 论文阅读(一种基于球面投影和特征提取的岩石点云快速配准算法)
  • [ DOS 命令基础 4 ] DOS 命令命令详解-端口进程相关命令
  • 【ROS2】hbm_img_msgs/msg/HbmMsg1080P 转 opencv cv::Mat
  • 江协科技STM32学习- P32 MPU6050
  • PHP不良事件上报系统源码,医院安全不良事件管理系统,基于 vue2+element+ laravel框架开发
  • 前端页面整屏滚动fullpage.js简单使用
  • 儿童安全座椅行业全面深入分析
  • 【Linux】将 bin 目录添加到环境变量 LD_LIBRARY_PATH
  • 【【简单systyem verilog 语言学习使用二--- 新adder加法器 】】
  • 【Rust中的错误处理】
  • (十二)JavaWeb后端开发——MySQL数据库
  • SpringBoot框架:新闻稿件管理技术进阶
  • Redis数据类型——针对实习面试
  • 绿宝石二十载:如何打破国外在高端电容市场的垄断?
  • China Geodetic Coordinate System 2000 PRJ文件解析
  • java重要知识点 JVM基本结构
  • ACM模式输入输出处理(JS版)
  • ONLYOFFICE 文档8.2更新评测:PDF 协作编辑、性能优化及更多新功能体验