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

Rust 力扣 - 3090. 每个字符最多出现两次的最长子字符串

文章目录

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

题目描述

在这里插入图片描述

题解思路

本题使用滑动窗口进行求解,使用左指针和右指针分别表示窗口的左边界和窗口的右边界,使用哈希表记录窗口内的字符及其对应数量

我们首先向右移动右指针,将字符加入到哈希表中进行计数,如果当前加入的字符在窗口中超过3个,则右移左指针从窗口中移除元素,直到左指针把当前字符从窗口中移除一个

在移动过程中记录窗口长度的最大值,窗口长度的最大值即为本题结果

题解代码

use std::collections::HashMap;

impl Solution {
    pub fn maximum_length_substring(s: String) -> i32 {
        let s = s.as_bytes();

        let mut map = HashMap::new();

        let mut ans = 0;

        let mut left  = 0;

        for i in 0..s.len() {
            if let Some(j) = map.get(&(s[i])) {
                if *j == 2 {
                    while s[left] != s[i] {
                        if let Some(k) = map.get_mut(&s[left]) {
                            *k -= 1;
                        }

                        left += 1;
                    }
                    left += 1;

                    continue;
                } else {
                    map.insert(s[i], j + 1);
                }
            } else {
                map.insert(s[i], 1);
            }

            ans = ans.max(i - left + 1);
        }

        ans as i32
    }
}

题目链接

https://leetcode.cn/problems/maximum-length-substring-with-two-occurrences/


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

相关文章:

  • 2024江苏省网络建设与运维省赛Linux(十) mariadb 服务
  • Centos7.6离线安装软件
  • 11.4工作笔记
  • 华为鸿蒙应用开发
  • UFO:Windows操作系统的具象智能代理
  • 【含开题报告+文档+源码】基于Web的房地产销售网站的设计与实现
  • elasticSearch 7.12.1 Docker 安装ik分词
  • df.transform函数的使用
  • Rust 力扣 - 1423. 可获得的最大点数
  • Java 用户随机选择导入ZIP文件,解压内部word模板并入库,Windows/可视化Linux系统某麒麟国防系统...均可适配
  • 江协科技STM32学习- P30 FlyMCU串口下载STLink Utility
  • 【基础】os模块
  • 2024年10款专业的PDF合并工具帮你实现高效办公。
  • 使用 Github 进行项目管理
  • Vue中props和data的优先级哪个更高?
  • 联丰策略股票交易市场上周五股票ETF市场紫金净流入68亿元
  • 通过自定义指令实现图片懒加载
  • 在VScode中配置C_C++环境
  • 使用nvm切换node版本失败
  • Python 一维列表基础语法
  • LM Head weights;ChatGPT-3词汇量:175,000;llama7b 词汇量,词嵌入维度:4096
  • 【LeetCode】移除链表中等于设定值的元素、反转链表
  • 创维E900-S_华为EC6108V9_v9u_海思hi3798mv100华为系统优盘刷机固件包
  • CesiumJS 案例 P20:监听鼠标滚轮、监听鼠标左键按下与松开、监听鼠标右键按下与松开、监听鼠标左击落点
  • Linux:线程安全的单例模式
  • 进程的概念