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

LeetCode刷题笔记 | 3 | 无重复字符的最长子串 | 双指针 | 滑动窗口 | 2025兴业银行秋招笔试题 | 哈希集合

🙋大家好!我是毛毛张!
🌈个人首页: 神马都会亿点点的毛毛张
这是一道银行的面试题,就是简单?!

LeetCode链接:3. 无重复字符的最长子串

1.题目描述

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

示例 1:

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

示例 2:

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

示例 3:

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

提示:

  • 0 < = s . l e n g t h < = 5 ∗ 1 0 4 0 <= s.length <= 5 * 10^4 0<=s.length<=5104
  • s 由英文字母、数字、符号和空格组成

2.题解

  • 盲猜暴力解法肯定超时,毛毛张就不在这里介绍了
  • 这个题目只需要最长子串的长度,做完可以尝试一下这道题目:LeetCode:67.最小覆盖子串

2.1 双指针-哈希集合

class Solution {public int lengthOfLongestSubstring(String s) {// 使用一个Set来存储当前子串中的字符Set<Character> set = new HashSet<>();// 初始化左右指针和最大长度int left, right;int maxLen = 0;// 从左到右遍历字符串for (left = 0, right = 0; right < s.length(); right++) {// 获取当前字符Character c = s.charAt(right);// 如果当前字符不在Set中,更新最大长度if (!set.contains(c)) {maxLen = Math.max(maxLen, right - left + 1);}// 如果当前字符在Set中,则移动左指针直到没有重复字符while (set.contains(c)) {set.remove(s.charAt(left));left++;}// 将当前字符添加到Set中set.add(c);}// 返回最大长度return maxLen;}
}

2.2 双指针-哈希数组

  • 如果能用哈希集合,那么大概率也可以使用哈希数组
class Solution {public int lengthOfLongestSubstring(String s) {// 使用一个大小为128的整数数组来记录字符出现的次数int[] arr = new int[128];// 初始化左右指针和最大长度int left, right;int maxLen = 0;// 从左到右遍历字符串for (left = 0, right = 0; right < s.length(); right++) {// 获取当前字符char c = s.charAt(right);// 如果当前字符在数组中的计数为0,更新最大长度if (arr[c] == 0) {maxLen = Math.max(maxLen, right - left + 1);}// 如果当前字符在数组中的计数不为0,则移动左指针直到没有重复字符while (arr[c] != 0) {arr[s.charAt(left)]--;left++;}// 将当前字符的计数加1arr[c]++;}// 返回最大长度return maxLen;}
}

相关文章:

LeetCode刷题笔记 | 3 | 无重复字符的最长子串 | 双指针 | 滑动窗口 | 2025兴业银行秋招笔试题 | 哈希集合

&#x1f64b;大家好&#xff01;我是毛毛张! &#x1f308;个人首页&#xff1a; 神马都会亿点点的毛毛张 这是一道银行的面试题&#xff0c;就是简单&#xff1f;&#xff01; LeetCode链接&#xff1a;3. 无重复字符的最长子串 1.题目描述 给定一个字符串 s &#xff0c…...

验证cuda和pytorch都按照成功了

要验证您的PyTorch是否能够调用CUDA&#xff0c;您可以执行以下步骤&#xff1a; 1. **检查CUDA是否可用**&#xff1a; 在Python中运行以下代码来检查CUDA是否可用&#xff1a; python import torch print(torch.cuda.is_available()) 如果输出为 True&…...

iOS开发如何自己捕获Crash

为了在iOS中捕获和处理未捕获的Objective-C异常和系统信号引起的崩溃&#xff0c;可以使用NSSetUncaughtExceptionHandler和标准的Unix信号处理机制来实现。这能帮助你记录绝大部分的崩溃信息。以下是详细的实现步骤和代码示例&#xff1a; 一、系统崩溃处理 通过NSSetUncaug…...

雪花算法(Snowflake Algorithm)

雪花算法&#xff08;Snowflake Algorithm&#xff09;是一种分布式唯一ID生成算法&#xff0c;主要用于生成全球唯一的ID&#xff0c;广泛应用于分布式系统中&#xff0c;例如在数据库中作为主键。这个算法最初由Twitter提出&#xff0c;并且被广泛使用在很多大规模系统中。有…...

〖任务1〗ROS2 jazzy Linux Mint 22 安装教程

前言&#xff1a; 本教程在Linux系统上使用。 目录 一、linux安装二、linux VPN安装三、linux anaconda安装&#xff08;可选&#xff09;四、linux ROS2 安装五、rosdep init/update 解决方法六、安装GUI 一、linux安装 移动硬盘安装linux&#xff1a;[LinuxToGo教程]把ubunt…...

图像增强:使用周围像素填充掩码区域

制作图像需要填充的掩码区域,对需要填充的位置的mask赋值非0,不需要填充赋值为0使用cv2.inpaint对图像掩码mask中非0元素位置的图像像素进行修复。从而实现使用周围像素填充掩码区域cv2.inpaint 是 OpenCV 库中的一个函数,用于图像修复(inpainting),即填充图像中的损坏区…...

给虚拟机Ubuntu扩展硬盘且不丢数据

1.Ubuntu关机状态下先扩展&#xff0c;如扩展20GB 2.进入ubuntu&#xff0c;切换root登录&#xff0c;必须是root全选&#xff0c;否则启动不了分区工具gparted 将新的20GB创建好后&#xff0c;选择ext4,primary&#xff1b; 3.永久挂载 我的主目录在/并挂载到/dev/sda1 从图…...

Oracle(41)如何使用PL/SQL批量处理数据?

在PL/SQL中&#xff0c;批量处理数据是一种高效的方法&#xff0c;可以在数据库中处理大量数据&#xff0c;而无需逐行操作。批量处理数据的关键技术包括&#xff1a; PL/SQL表&#xff08;索引表&#xff09;&#xff1a;在内存中存储数据以进行批量操作。FORALL语句&#xf…...

JavaEE 第2节 线程安全知识铺垫1

目录 一、通过jconsole.exe查看线程状态的方法 二、Thread类的几种常见属性 三、线程状态 一、通过jconsole.exe查看线程状态的方法 通过jconsole查看线程状态非常实用的方式 只要你安装了jdk&#xff0c;大致按照这个目录就可以找到这个可执行程序&#xff1a; 然后双击这…...

LeetCode Hot100 零钱兑换

给你一个整数数组 coins &#xff0c;表示不同面额的硬币&#xff1b;以及一个整数 amount &#xff0c;表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额&#xff0c;返回 -1 。 你可以认为每种硬币的数量是无限的。 示…...

微信小程序接口实现语音转文字

一、效果展示 我们有一个按钮&#xff0c;点击“开始录音”按钮&#xff0c;此时按钮变成“停止录音”并开始计时&#xff0c;点击停止录音后&#xff0c;界面上即可展示返回的文字 二、代码实现 完整代码实现见github 1.小程序端代码 // index.js const recorderManager…...

[Spark Streaming] 读取 Kafka 消息, 插入到 MySQL

以下是一个简单的使用 Spark Streaming 读取 Kafka 消息、统计数据后插入到 MySQL 中的 Scala 代码示例&#xff1a; import org.apache.spark.SparkConf import org.apache.spark.streaming.{Seconds, StreamingContext} import org.apache.spark.streaming.kafka.KafkaUtils…...

精选3款国内wordpress 主题,建站首选

WordPress作为一款功能强大且易于使用的建站平台&#xff0c;已经成为了许多企业和个人搭建网站的首选。为了帮助大家更好地选择适合自己的WordPress主题&#xff0c;小编将为大家推荐三款国内优秀的WordPress主题&#xff1a;子比主题、OneNav主题和RiTheme主题。 1.子比主题…...

JavaScript之 Uint8Array 类型数组(solana pda场景中的大小端)

文章目录 JavaScript之 Uint8Array 类型数组numberToUint8Array 数字转换为Uint8Array为什么要把数字转换为Uint8Array数字转换为Uint8Array的大小端问题solana pda场景中的大小端JavaScript之 Uint8Array 类型数组 Uint8Array 数组类型表示一个8位无符号整型数组,创建时内容…...

《Windows API每日一练》24.1 WinSock简介

本节将逐一介绍WinSock的主要特性和组件&#xff0c;套接字、WinSock动态库的使用。 本节必须掌握的知识点&#xff1a; Windows Socket接口简介 Windows Socket接口的使用 第178练&#xff1a;网络时间校验 24.1.1 Windows Socket接口简介 ■以下是WinSock的主要特性和组件…...

openwrt编译Dockerfile

一、Dockerfile FROM ubuntu:20.04ENV TZAsia/ShanghaiRUN apt-get update && \apt-get install -y --no-install-recommends tzdata && \ln -fs /usr/share/zoneinfo/$TZ /etc/localtime && \dpkg-reconfigure --frontend noninteractive tzdata &am…...

【C语言】分支与循环(循环篇)——结尾猜数字游戏实现

前言 C语言是一种结构化的计算机语言&#xff0c;这里指的通常是顺序结构、选择结构、循环结构&#xff0c;掌握这三种结构之后我们就可以解决大多数问题。 分支结构可以使用if、switch来实现&#xff0c;而循环可以使用for、while、do while来实现。 1. while循环 C语言中…...

【数据结构】链表篇

文章目录 1.链表的概念以及结构2.链表的分类2.1 单向或者双向2.2 带头或者不带头2.3 循环或者不循环2.4 无头单向非循环链表和带头双向循环链表 3.单链表的实现3.1 准备工作3.2 节点的创建3.3 单链表的释放3.4 打印链表3.5 单链表的尾插3.6 单链表的尾删3.7 单链表头删3.8 单链…...

Python SciPy介绍

在数据科学和工程领域&#xff0c;Python已经成为了一个不可或缺的工具&#xff0c;这主要得益于其强大的库和框架支持。其中&#xff0c;SciPy库作为Python科学计算的核心库之一&#xff0c;为研究人员、工程师和数据分析师提供了大量高效的算法和数学工具。本文将带您深入了解…...

docker镜像源

1、直接在服务器上创建这个文件&#xff0c;将镜像源配置在里面 /etc/docker/daemon.json {"registry-mirrors": ["https://do.nark.eu.org","https://dc.j8.work","https://docker.m.daocloud.io","https://dockerproxy.com&qu…...

【clion】clion打开文件目录卡死问题

巨卡&#xff0c;几乎无法打开&#xff0c;据说是fsnotifier64.exe 被限制了。删除 火绒就好了。 关闭windows defender 官方&#xff1a;关闭 Windows 安全中心中的Defender 防病毒保护 此时&#xff0c;删除火绒&#xff1a; 界面变这样了&#xff1a;...

[CR]厚云填补_GridFormer

GridFormer: Residual Dense Transformer with Grid Structure for Image Restoration in Adverse Weather Conditions Abstract 恶劣天气条件下的图像恢复是计算机视觉中的一个难点。在本文中&#xff0c;我们提出了一种新的基于变压器的框架GridFormer&#xff0c;它可以作为…...

PostgreSQL数据库内核(二):通过initdb传递guc参数

目录 增加guc参数 initdb参数传递 pg_ctl参数传递 参数验证 新增guc参数pg_test_parameter&#xff0c;支持从initdb和pg_ctl命令中传递/覆盖参数&#xff0c;使用场景是TDE透明加密指定算法或者某些定制化需求。 增加guc参数 pg源码是这样描述guc参数的&#xff1a;它是全局…...

rust常用的宏使用记录(九)

matches! 宏使用 matches! 是 Rust 标准库中一个非常有用的宏&#xff0c;它允许你方便地匹配一个表达式的结果是否符合某个模式。它的基本用法如下&#xff1a;matches!(expression, pattern) 这个宏返回一个布尔值&#xff0c;如果 expression 匹配 pattern&#xff0c;则返回…...

【Python机器学习】支持向量机——手写数字识别问题

基于SVM的数字识别步骤&#xff1a; 1、收集数据&#xff1a;提供的文本文件 2、准备数据&#xff1a;基于二值图像构造向量 3、分析数据&#xff1a;对图像向量进行目测 4、训练算法&#xff1a;采用两种不同的核函数&#xff0c;并对径向基核函数采用不同的设置来运行SMO算法…...

学习笔记-Cookie、Session、JWT

目录 一、验证码的生成与校验 1. 创建生成验证码的工具类 2. 写一个 Controller 3. 实现验证码验证 1. 获取验证码 2. 验证码请求过程 3. 验证码的校验 4. 原理说明 5. 验证 6. 总结 二、JWT登录鉴权 1. 为什么要做登录鉴权&#xff1f; 2. 什么是 JWT 3. JWT相比…...

题海战术,面试必胜秘诀

目录 1.Java 的优势是什么&#xff1f;2.什么是 Java 的多态特性?3.Java 中的参数传递是按值还是按引用?4.为什么 Java 不支持多重继承?5.什么是 Java 中的不可变类?总结 题目 来自面试鸭刷题神器 1.Java 的优势是什么&#xff1f; Java 的跨平台性、垃圾回收机制以及其强…...

设计模式详解(十九)——命令模式

命令模式简介 命令模式定义 命令模式&#xff08;Command Pattern&#xff09;是一种在面向对象程序设计中常用的行为型设计模式。命令模式的核心思想在于将请求封装成一个对象&#xff0c;从而使发出请求的责任和执行请求的责任分割开。它可以让请求发送者和请求接收者之间消…...

实战:MySQL数据同步神器之Canal

1.概叙 场景一&#xff1a;数据增量实时同步 项目中业务数据量比较大&#xff0c;每类业务表都达到千万级别&#xff0c;虽然做了分库分表&#xff0c;每张表数据控制在300W以下&#xff0c;但是效率还是达不到要求&#xff0c;为了提高查询效率&#xff0c;打算使用ES进行数…...

5.6软件工程-运维

运维 系统转换系统维护系统评价练习题 系统转换 新老系统的转换 系统转换是指&#xff1a;新系统开发完毕&#xff0c;投入运行&#xff0c;取代现有系统的过程&#xff0c;需要考虑多方面的问题&#xff0c;以实现与老系统的交接&#xff0c;有一下三种转换计划&#xff1a; …...

自己学建网站/童程童美少儿编程怎样收费

linux构建DHCP及DHCP中继服务器 用虚拟机搭建&#xff0c;所以把ISO镜像挂载 1.挂载光盘 #/mount /dev/hdc /mnt 2.安装DHCP服务 #cd /mnt/Server/ #rpm -ivh dhcp-3.0.5-21.el5.i386.rpm 3.复制主配置文件 #cp /user/share/doc/dhcp-3.0.5/dhcpd.conf.sample /etc/dhcpd.conf…...

人民日报客户端发稿价格/站长之家seo综合

前言 传送门 : 思路 我们先把所有利润都拿 然后我们将时间从小到大排序 如果当前的时间不在某个时间段内 , 贪心的想这个 时间节点 的价值要被考虑如果当前的时间在某个时间段内,说明区间重合,必然有一个是要被放下,所以我们通过小根堆维护最小的值,每次贪心的减去即可 C…...

网站怎么设计好看的图片/燕郊今日头条

方式一&#xff1a;在浮动元素的父级&#xff0c;添加overflow&#xff1a;hidden 方式二&#xff1a;在造成浮动影响的元素下写一个clear兄弟元素&#xff0c;#clear中写clear&#xff1a;both。清除以上兄弟元素左右浮动造成的影响。 <div id"head"></di…...

县新闻网站建设方案/网站页面的优化

语法定义 用abstract关键字修饰的类&#xff0c;则该类就是抽象类应用场景 a、在某些情况下&#xff0c;某个父类只知道其子类应该具有怎样的方法&#xff0c; 但无法准确知道子类如何实现这些方法&#xff0c;即&#xff1a;约束子类应该具有哪些方法。 b、从多个具有相同…...

做网站平面模板是啥意思/seo优化方案项目策划书

什么是Visual Studio Extensions for SharePoint Services&#xff1f;不妨Google一下。从下面的几张PPT截图&#xff0c;你也可以略为了解一二&#xff1a;...

wordpress获取分类名称/打开免费百度啊

前言 当 connection 对象构建初始化完成后&#xff0c;我们就可以利用 DB 来进行数据库的 CRUD ( Create、Retrieve、Update、Delete) 操作。本篇文章&#xff0c;我们将会讲述 laravel 如何与 pdo 交互&#xff0c;实现基本数据库服务的原理。 run laravel 中任何数据库的操…...