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

【滑动窗口+哈希表/数组记录】Leetcode 3. 无重复字符的最长子串

题目要求

给定一个字符串 s,找出其中不含有重复字符的最长子串的长度。

子字符串是字符串中连续非空字符序列。

示例 1

输入:s = "abcabcbb"
输出:3
解释:无重复字符的最长子串是 "abc",长度为 3

示例 2

输入:s = "bbbbb"
输出:1
解释:无重复字符的最长子串是 "b",长度为 1

示例 3

输入:s = "pwwkew"
输出:3
解释:无重复字符的最长子串是 "wke",长度为 3。请注意,答案必须是子串的长度,"pwke" 是一个子序列,不是子串。

提示

  • 0 <= s.length <= 5 * 10^4
  • s 由英文字母、数字、符号和空格组成

实际应用

文本编辑器中的应用

在文本编辑器中,用户输入文本时,编辑器需要实时检测是否有重复字符,以帮助用户避免输入错误。

数据流分析中的应用

在网络数据流分析中,需要实时检测数据流中的重复数据包,进行数据清洗和去重。

滑动窗口法

使用滑动窗口算法结合哈希表或数组来高效地记录和更新字符的位置,从而快速判断是否出现重复字符。

哈希表记录字符频率

#include <iostream>
#include <unordered_map>
#include <string>using namespace std;int lengthOfLongestSubstring(string s) {unordered_map<char, int> map;int left = 0, right = 0, res = 0;while (right < s.size()) {// 如果当前字符在map中存在,则更新left指针if (map.find(s[right]) != map.end()) {left = max(left, map[s[right]] + 1);}// 更新当前字符的索引map[s[right]] = right;right++;res = max(res, right - left);}return res;
}int main() {string s = "abcabcbb";cout << lengthOfLongestSubstring(s) << endl;return 0;
}

数组记录字符频率

#include <iostream>
#include <vector>
#include <string>using namespace std;int lengthOfLongestSubstring(string s) {vector<int> map(256, -1);int left = 0, right = 0, res = 0;while (right < s.size()) {// 如果字符重复,更新左边界if (map[s[right]] != -1) {left = max(left, map[s[right]] + 1);}// 更新字符的位置map[s[right]] = right;right++;res = max(res, right - left);    }return res;
}int main() {string s = "abcabcbb";cout << lengthOfLongestSubstring(s) << endl;return 0;
}

推荐一下

https://github.com/0voice

相关文章:

【滑动窗口+哈希表/数组记录】Leetcode 3. 无重复字符的最长子串

题目要求 给定一个字符串 s&#xff0c;找出其中不含有重复字符的最长子串的长度。 子字符串是字符串中连续非空字符序列。 示例 1 输入&#xff1a;s "abcabcbb" 输出&#xff1a;3 解释&#xff1a;无重复字符的最长子串是 "abc"&#xff0c;长度为…...

pytest 技术总结

目录 一 pytest的安装&#xff1a; 二 pytest有三种启动方式&#xff1a; 三 用例规则&#xff1a; 四 配置框架&#xff1a; 一 pytest的安装&#xff1a; pip install pytest # 安装 pip install pytest -U # 升级到最新版 二 pytest有三种启动方式&#xff1a; 1…...

java中的Selector详解

Selector(选择器)是Java NIO(非阻塞I/O)的核心组件,用于实现I/O多路复用,允许单个线程管理多个通道(Channel),从而高效处理高并发场景。 一、Selector的核心概念与作用 I/O多路复用 Selector通过事件驱动机制,监听多个通道的就绪状态(如可读、可写、连接建立等),无…...

DeepSeek 的长上下文扩展机制

DeepSeek 在基础预训练完成后,引入 YaRN(Yet another RoPE extensioN method)技术,通过额外的训练阶段将模型的上下文窗口从默认的 4K 逐步扩展至 128K。整个过程分为两个阶段:第一阶段将上下文窗口从 4K 扩展到 32K;第二阶段则进一步从 32K 扩展到 128K。每个阶段均采用…...

【修复】Django收到请求报Json解析错误

Django收到请求报Json解析错误 场景分析解决 场景 在使用Postman发送Django的请求时&#xff0c;只能使用原来的json内容&#xff0c;如果修改json内容则会报json解析上的错误 分析 可能是有对请求内容的长度做了上报校验 解决 最终在请求头Headers里找到了Content-Length…...

openEuler对比CentOS的核心优势分析

openEuler对比CentOS的核心优势分析 在开源操作系统领域&#xff0c;openEuler与CentOS均占据重要地位&#xff0c;但随着CentOS维护策略的调整&#xff08;如CentOS 8停止维护&#xff0c;转向CentOS Stream&#xff09;&#xff0c;越来越多的用户开始关注国产化替代方案。o…...

Python基于Django的全国二手房可视化分析系统【附源码】

博主介绍&#xff1a;✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&…...

VulnHub-DC-2靶机渗透教程

VulnHub-DC-2靶机渗透教程 1.靶机部署 [Onepanda] Mik1ysomething 靶机下载&#xff1a;https://download.vulnhub.com/dc/DC-2.zip 直接使用VMware导入打开就行 2.信息收集 2.1 获取靶机ip(arp-scan/nmap) arp-scan -l ​ nmap 192.168.135.0/24 2.2 详细信息扫描(nmap)…...

n8n 中文系列教程_10. 解析n8n中的AI节点:从基础使用到高级Agent开发

在自动化工作流中集成AI能力已成为提升效率的关键。n8n通过内置的LangChain节点&#xff0c;让开发者无需复杂代码即可快速接入GPT-4、Claude等大模型&#xff0c;实现文本处理、智能决策等高级功能。本文将深入解析n8n的AI节点体系&#xff0c;从基础的Basic LLM Chain到强大的…...

Jest 快照测试

以下是关于 Jest 快照测试的系统化知识总结,从基础使用到底层原理全面覆盖: 一、快照测试核心原理 1. 工作机制三阶段 #mermaid-svg-GC46t2NBvGv7RF0M {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GC46t2NBvGv…...

Linux内核参数调优(TCP BBR算法实践)

Linux 内核参数调优中 TCP BBR 算法的深度实践指南,包含原理说明、操作步骤、性能验证及生产环境注意事项: 一、BBR 算法原理 核心思想 基于拥塞状态而非丢包:传统 CUBIC 算法依赖丢包判断拥塞,BBR 通过测量带宽 (Bandwidth) 和 RTT (Round-Trip Time) 动态调整发送速率。…...

计算机网络 | 应用层(1)--应用层协议原理

&#x1f493;个人主页&#xff1a;mooridy &#x1f493;专栏地址&#xff1a;《计算机网络&#xff1a;自定向下方法》 大纲式阅读笔记 关注我&#x1f339;&#xff0c;和我一起学习更多计算机的知识 &#x1f51d;&#x1f51d;&#x1f51d; 目录 1. 应用层协议原理 1.1 …...

MuJoCo 关节角速度记录与可视化,监控机械臂运动状态

视频讲解&#xff1a; MuJoCo 关节角速度记录与可视化&#xff0c;监控机械臂运动状态 代码仓库&#xff1a;GitHub - LitchiCheng/mujoco-learning 关节空间的轨迹优化&#xff0c;实际上是对于角速度起到加减速规划的控制&#xff0c;故一般来说具有该效果的速度变化会显得丝…...

精益数据分析(27/126):剖析用户价值与商业模式拼图

精益数据分析&#xff08;27/126&#xff09;&#xff1a;剖析用户价值与商业模式拼图 在创业和数据分析的领域中&#xff0c;每一次深入学习都是一次成长的契机。今天&#xff0c;我们继续秉持共同进步的理念&#xff0c;深入研读《精益数据分析》&#xff0c;剖析用户价值的…...

Neo4j 常用查询语句

Neo4j 常用查询语句 Neo4j 是一个图数据库&#xff0c;查询语言是 Cypher&#xff0c;它类似于 SQL 但针对图形数据进行了优化。Cypher 语法直观易懂&#xff0c;适合用来处理图数据。本文将介绍一些 Neo4j 中常用的查询语句&#xff0c;帮助你快速掌握图数据的操作方法。 一…...

LVGL模拟器:NXP GUIDER+VSCODE

1. 下载安装包 NXP GUIDER&#xff1a;GUI Guider | NXP 半导体 CMAKE&#xff1a;Download CMake MINGW&#xff1a;https://github.com/niXman/mingw-builds-binaries/releases SDL2&#xff1a;https://github.com/libsdl-org/SDL/releases/tag/release-2.30.8 VSCODE&…...

《USB技术应用与开发》第四讲:实现USB鼠标

一、标准鼠标分析 1.1简介 1.2页面显示 其中页面显示的“”不用管它&#xff0c;因为鼠标作为物理抓包&#xff0c;里面有时候会抓到一些错误&#xff0c;不一定是真正的通讯错误&#xff0c;很可能是本身线路接触质量不好等原因才打印出来的“”。 1.3按下鼠标左键 &#x…...

一、鸿蒙编译篇

一、下载源码和编译 https://blog.csdn.net/xusiwei1236/article/details/142675221 https://blog.csdn.net/xiaolizibie/article/details/146375750 https://forums.openharmony.cn/forum.php?modviewthread&tid897 repo init -u https://gitee.com/openharmony/mani…...

DataStreamAPI实践原理——计算模型

引入 Apache Flink 是一个框架和分布式处理引擎&#xff0c;用于在 无边界 和 有边界 数据流上进行有状态的计 算。Flink 能在所有常见集群环境中运行&#xff0c;并能以内存速度和任意规模进行计算。Flink可以处理批数据也可以处理流数据&#xff0c;本质上&#xff0c;流处理…...

得物业务参数配置中心架构综述

一、背景 现状与痛点 在目前互联网飞速发展的今天&#xff0c;企业对用人的要求越来越高&#xff0c;尤其是后端的开发同学大部分精力都要投入在对复杂需求的处理&#xff0c;以及代码架构&#xff0c;稳定性的工作中&#xff0c;在对比下&#xff0c;简单且重复的CRUD就显得…...

【算法】单词搜索、最短距离

单词搜索 这道题主要考察了深度优先遍历(DFS)算法。 我们通过几个简单例子来分析一些细节问题&#xff1a; 1. 要搜索的单词串&#xff1a;abc 搜索的过程中必须按照字母顺序&#xff0c;首先从矩阵中的第一个元素开始搜索&#xff0c;遇到字母a则开始深度优先遍历&#xff0…...

Python函数基础:简介,函数的定义,函数的调用和传入参数,函数的返回值

目录 函数简介 函数定义&#xff0c;调用&#xff0c;传入参数&#xff0c;返回值 函数的定义 函数的调用和传入参数 函数的返回值 函数简介 函数简介&#xff1a;函数是组织好&#xff0c;可重复使用&#xff0c;用来实现特定功能&#xff08;特定需求&#xff09;的代码…...

基于FFmpeg命令行的实时图像处理与RTSP推流解决方案

前言 在一些项目开发过程中需要将实时处理的图像再实时的将结果展示出来&#xff0c;此时如果再使用一张一张图片显示的方式展示给开发者&#xff0c;那么图像窗口的反复开关将会出现窗口闪烁的问题&#xff0c;实际上无法体现出动态画面的效果。因此&#xff0c;需要使用码流…...

【随笔】地理探测器原理与运用

文章目录 一、作者与下载1.1 软件作者1.2 软件下载 二、原理简述2.1 空间分异性与地理探测器的提出2.2 地理探测器的数学模型2.21 分异及因子探测2.22 交互作用探测2.23 风险区与生态探测 三、使用&#xff1a;excel 一、作者与下载 1.1 软件作者 作者&#xff1a; DOI: 10.…...

【人工智能】Python中的深度学习模型部署:从训练到生产环境

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 随着深度学习在各个领域的应用日益增多,如何将训练好的深度学习模型高效地部署到生产环境中,成为了开发者和数据科学家的重要课题。本文将…...

Rule.resource作用说明

1. 说明 作用 Rule.resource 用于定义哪些文件需要被当前规则处理。它是对传统 test、include、exclude 的更底层封装&#xff0c;支持更灵活的匹配方式。 与 test/include/exclude 的关系 test: /.js$/ 等价于resource: { test: /.js$/ } include: path.resolve(__dirname, ‘…...

C++如何设计线程池(thread pool)来提高线程的复用率,减少线程创建和销毁的开销

线程池的基本概念与多线程编程中的角色 线程池&#xff0c;顾名思义&#xff0c;是一种管理和复用线程的资源池。它的核心思想在于预先创建一定数量的线程&#xff0c;并将这些线程保持在空闲状态&#xff0c;等待任务的分配。一旦有任务需要执行&#xff0c;线程池会从池中取出…...

从零开始使用SSH链接目标主机(包括Github添加SSH验证,主机连接远程机SSH验证)

添加ssh密钥(当前机生成和远程机承认) 以下是从头开始生成自定义名称的SSH密钥的完整步骤&#xff08;以GitHub为例&#xff0c;适用于任何SSH服务&#xff09;&#xff1a; 1. 生成自定义名称的SSH密钥对 # 生成密钥对&#xff08;-t 指定算法&#xff0c;-f 指定路径和名称…...

Maxscale实现Mysql的读写分离

介绍&#xff1a; Maxscale是mariadb开发的一个MySQL数据中间件&#xff0c;配置简单&#xff0c;能够实现读写分离&#xff0c;并且能根据主从状态实现写库的自动切换&#xff0c;对多个服务器实现负载均衡。 实验环境&#xff1a; 基于gtid的主从同步的基础上进行配置 中…...

以运营为核心的智能劳动力管理系统,破解连锁零售、制造业排班难题

在连锁零售、制造业、物流等劳动力密集型行业中&#xff0c;排班与考勤管理不仅是人力资源管理的核心环节&#xff0c;更是直接影响企业运营效率、成本控制与合规风险的关键场景。尤其在当前经济环境下&#xff0c;企业面临用工成本攀升、政策合规趋严、业务波动频繁等多重挑战…...