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

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 * 104
  • s 由英文字母、数字、符号和空格组成

分析条件:

1.我们只需要最长数组的长度即可,因此我们实际上是要把可能得情况全部求出来并取其中的最大值,因此滑动数组是最优解

2.什么事滑动数组呢,尾指针遍历数组,头指针动态变化(根据是否有重复元素)

3.那么头指针如何动态变化呢,我们可以用一个HashMap集合记录每个元素上一次出现的位置,我们遇到重复元素,让头指针指向该重复元素在Map中记录的索引的下一个位置

正确解题思路:

class Solution {public int lengthOfLongestSubstring(String s) {//定义一个变量记录结果int ans = 0;int len = s.length();//定义一个哈希数组记录当前字符索引Map<Character,Integer> map = new HashMap<>();for(int start = 0,end = 0; end < len;end++){if(map.containsKey(s.charAt(end))){//防止start回退start = Math.max(start,map.get(s.charAt(end)) + 1);}//把当前元素的索引存入map集合map.put(s.charAt(end),end);ans = Math.max(ans,end - start + 1);}return ans;}
}

通过这道题可以学到什么:

要注意取start和重复元素索引位置下一位中的最大值,防止start头指针回退

http://www.xdnf.cn/news/1321579.html

相关文章:

  • 实践笔记-VSCode与IDE同步问题解决指南;程序总是进入中断服务程序。
  • LAMP 架构部署:Linux+Apache+MariaDB+PHP
  • 规避(EDR)安全检测--避免二进制文件落地
  • 云计算- KubeVirt 实操指南:VM 创建 、存储挂载、快照、VMI全流程 | 容器到虚拟机(镜像转换/资源调度)
  • 前端处理导出PDF。Vue导出pdf
  • 王树森深度强化学习DRL(三)围棋AlphaGo+蒙特卡洛
  • STRIDE威胁模型
  • 新手向:Java方向讲解
  • Python实战--基于Django的企业资源管理系统
  • 块体不锈钢上的光栅耦合表面等离子体共振的复现
  • 后端通用基础代码
  • 在嵌入式单片机开发中,通过校验和或者校验码来比对程序版本好有何优劣势
  • 【OLAP】trino安装和基本使用
  • 【完整源码+数据集+部署教程】无人机目标检测系统源码和数据集:改进yolo11-efficientViT
  • Linux网络服务(一)——计算机网络参考模型与子网划分
  • Linux bash核心介绍及目录命令
  • Android中使用RxJava实现网络请求与缓存策略
  • Git-2025-0818
  • 数据结构:查找表
  • 开源im即时通讯软件开发社交系统全解析:安全可控、功能全面的社交解决方案
  • 从零到GPT:Transformer如何引领大模型时代
  • Nextcloud 私有云部署:cpolar 内网穿透服务实现安全远程文件访问
  • 4G高负荷解决方案
  • 《红色脉-络:一部PLMN在中国的演进史诗 (1G-6G)》 第6篇 | 专题:核心网的第一次革命——从电路交换到“用户/控制面分离”
  • python-----机器学习中常用的数据预处理
  • 英特尔公司Darren Pulsipher 博士:以架构之力推动政府数字化转型
  • Apache RocketMQ,构建云原生统一消息引擎
  • 云原生事件驱动引擎(RocketMQ-EventBridge)应用场景与技术解析
  • Qt5基础控件详细讲解
  • Spring Boot 实用小技巧:多级缓存(Caffeine + Redis)- 第545篇