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

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

题目描述

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

子串

 的长度。

示例 1:

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

示例 2:

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

示例 3:

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

题解

使用hashmap和滑动窗口去实现

import java.util.HashMap;
class Solution {public int lengthOfLongestSubstring(String s) {int length=0;//使用hash表实现HashMap<Character,Integer> map=new HashMap<>();//将字符串转化为字符数组char[] str=s.toCharArray();//记录滑动窗口的起始指针int start=0;//记录滑动窗口的结束指针int end=0;for(;end<str.length;end++){if(map.containsKey(str[end])){//如果集合中有这个字母,更新起始位置到这个重复字母的下一位// 更新 start 为当前 start 和当前字符上次出现位置的下一个位置的最大值,防止指针往回走start = Math.max(start, map.get(str[end]) + 1);}//如果集合中没有这个字母,就加入到集合中map.put(str[end],end);length=Math.max(length,end-start+1);}return length;}
}

 


http://www.mrgr.cn/news/61149.html

相关文章:

  • Docker Compose 教程
  • 深度学习张量的秩、轴和形状
  • Android Dex VMP 动态加载加密指令流
  • android 启用lint检查
  • 不同路径 不同路径 II 整数拆分
  • 大语言模型预训练、微调、RLHF
  • 虚拟现实辅助工程技术助力航空航天高端制造业破局
  • 3211、生成不含相邻零的二进制字符串-cangjie
  • 富格林:曝光可信经验击败陷阱
  • [ComfyUI]Flux 局部重绘,无需 ControlNet,原生就足够强大!
  • Java中的自动装箱(Autoboxing)和拆箱(Unboxing)机制
  • 学点高数-数学上的集合练习①-三讲一测
  • Excel 单元格小数点精确位数机制
  • NOIP-2022 题解
  • 人工智能在单细胞测序和空间转录组学中的最新研究进展|顶刊速递·24-10-28
  • 【专用名词的离线语音识别在2024年底的解决方法调查-会议签到的补充】
  • 成品气楼参考图集有哪些?盘点5本实用图集,你都知道哪几本
  • MAC电脑的ifconfig输出
  • 【linux开发-驱动】-RS232/485相关
  • 基于Python的PostgreSQL数据库操作示例(二)
  • Vue3 学习笔记(十一)Vue生命周期
  • linux命令小总结
  • H5底部输入框点击弹起来的时候被软键盘遮挡bug
  • Windows 修改用户名
  • yt-dlp 和 ffmpeg 下载和处理视频的基本命令
  • Zookeeper 和 Eureka 做注册中心有什么区别?