3、无重复字符的最长子串

news2024/12/23 15:41:55

题目

链接:leetcode链接

思路分析(滑动窗口)

子串是连续的,很容易联想到滑动窗口,处理连续子串问题很方便。

先设置left和right两个指针,从0位置开始移动。
为了去判断窗口里面有没有出现重复的子串,可以使用一个hash表来存出现的次数,
这里为了防止有些小伙伴不会用hash表,就先用数组模拟一下hash表吧。

当hash表里面没出现right字符时,就插入hash表,right++,增加子串的长度。(进窗口)
当hash表里面right字符出现的次数不是大于1的时候,就出现了重复,需要出窗口了。(出窗口)
注意,在出窗口的时候,需要删除重复字符前面的字符,否则,这些字符,在后面新子串里面也会被当做重复字符。

记录下此时子串的长度。
这时,我们将left移到重复字符的下一个位置,继续寻找更长的子串。(更新结果)

在这里插入图片描述

代码

int lengthOfLongestSubstring(string s) {
        int len = 0;

        int hash[128] = {0};//用数组模拟一个哈希表
        for(int left = 0,right = 0;right < s.size();++right)
        {
            if(hash[s[right]] == 0)//进窗口
            {
                hash[s[right]]++;
            }
            else//判断
            {
                while(s[left]!=s[right])
                {
                    hash[s[left]] = 0;//清空已经走过的
                    left++;
                }
                left++;
            }

            len = max(len,right - left + 1);//更新结果
        }

        return len;
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2108779.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

matplotlib可视化学习

单折线图&#xff1a;显示变量随时间变化而发生的变化&#xff0c;也可以增加标签 多折线图&#xff0c;对比差异 散点图&#xff1a;体现数据在一定范围内的分布情况 box箱图&#xff1a;体现数据的分布情况&#xff0c;与散点图不同的是&#xff0c;它还统计了最大/最小值、中…

基于C+++CSV文件存储开发图书管理系统

简介 这是一个简单的拥有图形界面的图书管理系统。 特色 前后端完全分离易于使用的交互界面 功能介绍 主要有图书管理和用户管理两项功能。 默认读取同一目录下的 user.csv 和 book.csv 作为用户和图书数据文件。也可在登录后导入其他数据文件。 在无数据文件的情况下&am…

2024年6月第2套英语四级真题PDF

2024年6月第2套英语四级真题PDF

python 统计文件夹中图片尺寸

python Code import os import matplotlib.pyplot as plt import numpy as np import copy import shutil import cv2 import matplotlib.pyplot as plt def cv_imread(file_path):#imdedcode读取的是RGB图像cv_img cv2.imdecode(np.fromfile(file_path,dtypenp.uint8),-1)re…

基于STM32的RTOS--freertos的使用(HAL实现多任务)

一&#xff1a;STM32cubemx配置 1&#xff1a;工程建立 &#xff08;1&#xff09;打开stm32cubemx 点击进入芯片选择页面 &#xff08;2&#xff09;选择对应的芯片型号双击 2&#xff1a;调试接口配置 3&#xff1a;时钟设置 使用的开发板没有外部晶振不选择外部使用内部设置…

MacOS---IDEA快捷键:生成get/set方法

介绍 在苹果电脑使用快捷键快速生成get/set方法。 快捷键 Cmdn

【大规模语言模型:从理论到实践】Transformer中PositionalEncoder详解

书籍链接&#xff1a;大规模语言模型&#xff1a;从理论到实践 第15页位置表示层代码详解 1. 构造函数 __init__() def __init__(self, d_model, max_seq_len80):super().__init__()self.d_model d_model # 嵌入的维度&#xff08;embedding dimension&#xff09;d_mode…

Echart 环形图 特殊字体 富文本

注&#xff1a;特殊字体需要UI人员提供一下 .ttf 文件 完整代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">&…

QAM星座图平均功率能量

文章目录 引言结论计算&推导推导公式数值结果验证参考文献 引言 本文主要参考了博客1&#xff0c;文章写的比较漂亮。但可惜推导过程是错误的 结论 先说结论&#xff0c;对于M-QAM调制而言&#xff0c;QAM符号的平均能量 E s E_{s} Es​ 可以由下式计算得到 E s ( M …

使用Qt this->pos,和event->pos 实现界面跟随鼠标移动

对比 this->pos() 表示当前窗口左上角相对于整个桌面屏幕的位置。 如下图所示 event->globalPos() 是当前鼠标点击的位置相对于桌面的位置。 想要做到鼠标界面跟随鼠标左键移动&#xff0c;就需要计算他们的相对位置。 最后让鼠标移动到新的位置的时候&#xff0c;使用…

【SRC挖掘】越权漏洞——burp插件被动检测越权漏洞,一个插件让挖洞效率翻倍!Autorize

越权与未授权漏洞 越权漏洞什么是越权漏洞&#xff1f;Autorize插件安装使用步骤拦截过滤器 越权漏洞 什么是越权漏洞&#xff1f; 越权漏洞是指应用程序未对当前用户操作的身份权限进行严格校验&#xff0c;导致用户可以操作超出自己管理权限范围的功能&#xff0c;从而操作…

硬件工程师笔试面试——继电器

目录 6、继电器 6.1 基础 继电器原理图 继电器实物图 6.1.1 概念 6.1.2 结构组成及工作 6.1.3 应用场景 6.1.4 优点与缺点 6.1.5 继电器工作原理 6.2 相关问题 6.2.1 如何选择合适的继电器满足特定的应用需求 6.2.2 继电器在汽车电子系统中通常承担那些角色 6.2.3…

Android调整第三方库PickerView宽高--回忆录

一、效果 // 时间选择implementation com.contrarywind:Android-PickerView:4.1.9 多年前&#xff0c;使用到事件选择器&#xff0c;但是PickerView默认宽度使满屏的&#xff0c;不太符合业务需求&#xff0c;当时为此花了许多时间&#xff0c;最终找到了解决方案&#xff0c;…

二维高斯函数的两种形式

第一种形式很常见 多元正态分布 多元正态分布&#xff08;Multivariate Normal Distribution&#xff09;&#xff0c;也称为多变量正态分布或多维正态分布&#xff0c;是统计学中一种重要的概率分布&#xff0c;用于描述多个随机变量的联合分布。 假设有 n n n 个随机变量…

自己设计的QT系统,留个档

注册登录 主界面展示 天气预报 音乐播放

卷积神经网络与小型全连接网络在MNIST数据集上的对比

卷积神经网络&#xff08;CNN&#xff09; 深度卷积神经网络中&#xff0c;有如下特性 很多层&#xff08;Compositionality&#xff0c;组合性&#xff09;: 深度卷积神经网络通常由多层卷积和非线性激活函数组成。这种多层结构使得网络能够逐步提取和组合低层次的特征&…

shell 学习笔记:数组

目录 1. 定义数组 2. 读取数组元素值 3. 关联数组 4. 在数组前加一个感叹号 ! 可以获取数组的所有键 5. 在数组前加一个井号 # 获取数组的长度 6. 数组初始化的时候&#xff0c;也可以用变量 7. 循环输出数组的方法 7.1 for循环输出 7.2 while循环输出 7.2.1 …

大数据-120 - Flink Window 窗口机制-滑动时间窗口、会话窗口-基于时间驱动基于事件驱动

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

Redis实战宝典:开发规范与最佳实践

目录标题 Key命名设计&#xff1a;可读性、可管理性、简介性Value设计&#xff1a;拒绝大key控制Key的生命周期&#xff1a;设定过期时间时间复杂度为O(n)的命令需要注意N的数量禁用命令&#xff1a;KEYS、FLUSHDB、FLUSHALL等不推荐使用事务删除大key设置合理的内存淘汰策略使…

Java | Leetcode Java题解之第387题字符串中的第一个唯一字符

题目&#xff1a; 题解&#xff1a; class Solution {public int firstUniqChar(String s) {Map<Character, Integer> position new HashMap<Character, Integer>();Queue<Pair> queue new LinkedList<Pair>();int n s.length();for (int i 0; i …