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

【Java】【力扣】【字节高频】3.无重复字符的最长字串

思路

滑动窗口+map

代码

自己的

public static int lengthOfLongestSubstring(String s) {//定义变量int begin=0;int end=0;HashMap<Character,Integer> map=new HashMap<>();int max=0;//循环 ,结束条件:end到尾部for ( end = 0; end <s.length(); end++) {Character curChar=s.charAt(end);//判断是否包含// 1.不包含 扩张,更新mapif (!map.containsKey(s.charAt(end)) ) {map.put(s.charAt(end),end);}//2.包含// 左缩小:begin更新位置// 更新map//map.get(s.charAt(end))旧的索引else if (map.containsKey(curChar)) {begin=max(begin,map.get(curChar)+1);map.remove(curChar);map.put(curChar,end);}// 3.判断本次窗口的大小// >max,则更新int cur=end-begin+1;if (cur >max) {max=cur;}}return max;}

黑马老师的

总结

1.ifelse注意

2.变量初始值设置成什么 的问题==为什么 end从0开始

核心思路:

判断 end 每轮都在做什么

从 谁开始就要这么做

3.为什么begin要max() 二选一

map可能带来什么问题

begin=max(begin,map.get(s.charAt(end))+1);

http://www.dtcms.com/a/271428.html

相关文章:

  • HTTP API 身份认证
  • 【Qt】Qt QML json处理
  • 微信获取access_token授权的两种不同情况
  • 零成本实现文本转语音
  • python网络爬虫笔记21:天地图解析服务调用教程
  • 正点原子学习 用户权限管理
  • 海康威视监控相机实时性研究
  • 深度学习遇到的问题
  • 一[3.7] YOLO系列基础(2)- “Bottleneck模块详解”
  • JavaScript对象的深度拷贝
  • 17.Spring Boot的Bean详解(新手版)
  • 十、Rocky Linux 9.x 在线安装Nginx 1.28.0
  • 豆包编写Java程序小试
  • 电子元器件基础知识总结
  • 基于SpringBoot+Vue的疫情问卷调查与返校信息管理系统】前后端分离
  • 城市地质大数据平台:透视地下空间,赋能智慧未来
  • git断点续传,中断后继续下载
  • 【计算机三级网络】——IP校园网大题(第二道):路由代码填空
  • 如何选择时序数据库:关键因素与实用指南
  • 20250709: WSL+Pycharm 搭建 Python 开发环境
  • 数据结构--堆的实现
  • 【黑马点评】(四)分布式锁
  • 深入理解 Spring AOP 代理机制:JDK 动态代理与 CGLIB 的对比与选择
  • c++学习-类中类成员变量的创建和释放顺序2-资源new出来的对象未被手动delete
  • 19-C#静态方法与静态类
  • HashMap的get与put流程源码深度解析
  • EPS 转 SVG/PNG 转换器集合
  • 托卡马克装置的发电过程解析
  • C++面试冲刺笔记1:虚函数的基本工作原理
  • thinkphp使用redis抢单实例