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

JAVA113 Leecode 3 无重复字符的最长字串

3无重复字符的最长字串

先想思路,看题解,对照题解思路一不一样,很一样直接开始写,没思路直接看题解

i:找到元素的hashmap的key的value,通过value定位到key i=位置开始的地方
res:返回的长度,=初始值res 0,和此时遍历到的字符串第j个-i i是初始值是-1 如果没有找到元素hashmap中,那么此时没有重复字符res=res,当前字符次序j --1=j+1 如果找到元素hashmap中,那么i=hashmap中此元素的value res=老res 和 此时遍历次序J-找到元素位置i的 最大值 此时遍历到的次序j 就是字符串中第二次出现的重复字符串的位置,如果后续还可以遍历j 那么如果没找到 res=老res,j老j+1 -i 比大小 较大值
在这里插入图片描述
i没更新

abacdeja

sjihashmapres
0-10
i=Math.max(i,map.contains(s.chart(j)))
if map.containsKey(s.charAt(j))
i=math.max(i,map.get(s.charAt(j)))res=math.max(res,j-i)
a0-1a 0res=math.max(0,0–1)=1
b1-1a 0 b 1res=math.max(1,1–1)=2
a2i=math.max(i=-1,map.get(s.charAt(j)=a))=0)=0a 2 b 1res=math.max(res=2,j-i=2-0=2)=2
c30a2 b1 c3res=math.max Math.max(res=2,j-i=3-0=3)=3
d40a2 b1 c3 d4res=Math.max(res=3,j-i=4-0=4)=4
e50a2 b1 c3 d4 e5res=Math.max(res=4,j-i=5-0=5)=5
j60a2 b1 c3 d4 e5 j6res=Math.max(res=5,j-i=6-0=6)=6
a7i=Math.max(i=0,map.get(s.charAt(j)=a)=2)=2a7 b1 c3 d4 e5 j6res=Math.max(res=6,j-i=7-2=5)=6

OK
在这里插入图片描述
ababca
if(map.containsKey(s.charAt(j)))
i=Math.max(i,map.get(s.charAt(j)))
res=Math.max(res,j-i)

sjihashmapres
0-10
a0没找到 -1a 0res=Math.max(0,j-i=0–1=1)=1
b1没找到 -1a 0 b 1res=Math.max(res=1,j-i=1–1=2)=2
a2map.containsKey(s.charAt(j)=a)=true i=Math.max(i=-1,map.get(s.charAt(j)=a)=0)=0a2 b1res=Math.max(res=2,j-i=2-0=2)=2
b3map.containsKey(s.charAt(j)=b)=true i=Math.max(i=0,map.get(s.charAt(j)=b)=1)=1a2 b3res=Math.max(res=2,j-i=3-1=2)=2
c4map.containsKey(s.charAt(j)=c)=false i=1a2 b3 c4res=Math.max(res=2.j-i=4-1=3)=3
a5map.containsKey(s.charAt(j)=a)=true i=(i=1,map.get(s.charAt(j)=a)=2)=2a5 b3 c4res=Math.max(3,j-i=5-2=3)=3

ababca
为什么j遍历的时候不会减第一个i
可以 如果I没被赋值 就是第一个I 修正:第一个赋值后,没被赋值
如果I被赋值第二次,第二个重复,前面已经有重复的了,没重复复的字符串要从这里开始找,j-i 从这里开始

import java.util.HashMap;
import java.util.Map;public class Solution {public int lengthOfLongestSubstring(String s) {Map<Character,Integer> map=new HashMap<>();//定义hashmap//定义i=-1 hashmap中被找到元素的value 如果没又找到 i=-1 res=0 返回的长度int i=-1 ;int res=0;int length=s.length();//s的长度//开始遍历字符串for(int j=0;j<length;j++){//如果找到字符串hashmap中 修正 找到字符 那么更新i的值 i=老的位置 和 新的位置之间的 修正 老的值 和 新的值之间的较大值 新的值等于此时遍历发现元素在hashmap中的value 存入 老的值 得到的res//已经存入,此时以新的值进行计算res 哪个大 哪个长if (map.containsKey(s.charAt(j))){i=Math.max(i,map.get(s.charAt(j)));//比较旧的i和新发现的i元素的位置在hashmap中 修正 j元素 更新i=较大的值 旧的时代已经过去 res 已经计算过//旧的i已经有 新的i 前面已经有重复的元素了 已经有重复的字符串了 所以从新的I开始计算长度 原先的已经过去了}//更新hashmapmap.put(s.charAt(j),j);res=Math.max(res,j-i);//随时以新的I出现的位置进行计算,老的i如果没变,就一直算,如果变了,证明找到重复的了又 当前遍历到的元素与hashmap中有重复 有重复字符串,为啥不存新的,还存老的//新的话不是从 到老的就是重复的, 从老的开始计算,那么后续j增加遍历 不是包含了两个重复元素//Liru abacsj 此时i=0 遍历到 a 2的位置 但是i还是等于0 因为hashmap中存的a 是0 此时 hashmap a 2 b 1 res=1,2,2=2 c 3 i=0 hashmap a2 b1 c3 res=2,3-0=3//从后续开始 从hashmap中原有后面一个开始到当前}
return res;}
}

在这里插入图片描述

class Solution {public int lengthOfLongestSubstring(String s) {//初始化hashmapHashMap<Character,Integer> map=new HashMap<>();//定义int i=-1; int res=0;int length=s.length();//遍历sfor(int j=0;j<length;j++){//如果找到元素if(map.containsKey(s.charAt(j))){//i定义 重置I 从当前I开始计算i=Math.max(i,map.get(s.charAt(j)));//取最大值,老的新的,为啥不能直接赋值,把找到元素的value直接赋给i,后续发现的value不永远比前面大吗?absba 后面发现的value不比前面大 后面是1 前面是0 res=j-i=2 i=1 res=j-i=4-1=3 如果直接赋值 那么此时res内包含重复元素 b i=1 刚好避免了两个重复元素}//放入hashmap 进行更新//hashmap重复元素动态更新value值//需要再理解下 这里动态更新的意义map.put(s.charAt(j),j);res=Math.max(res,j-i);}return res;}
}

动态更新后,原有值的value改变,如果下次遍历,发现含有相同元素,i就变为当前value ,如果不动态更新,那么res就会统计到两个字符串相同。

226.翻转二叉树

在这里插入图片描述
root

先想思路,看题解,对照题解思路一不一样,很一样直接开始写,没思路直接看题解

思路:root根不变,r.left 变到r.right 层层遍历 r.right=r.left 每一层使用数组暂时存储

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

相关文章:

  • 给上市公司做网站有什么用ui设计软件sketch
  • 【05】JMeter导出接口 保存文件到本地
  • linux怎么使用wordpress网站关键词优化方法
  • 【每日一个AI小知识】:什么是多模态AI?
  • NumPy 全面指南:使用技巧、安全实践与生态对比
  • 【IC】NoC设计入门 -- 流控 Flow Control 与交换 Switching
  • 泉州网站建设费用dw制作网站网页模板
  • 网站建设费用组成提高工作效率的方法有哪些
  • PyQt5(八):ui设置为可以手动随意拉伸功能
  • 小迪安全v2023学习笔记(一百四十三讲)—— Win系统权限提升篇AD内网域控NetLogonADCSPACKDCCVE漏洞
  • 傻瓜动态建站 工具做照片书的网站
  • 【开题答辩过程】以《基于Spring Boot的相机租赁系统》为例,不会开题答辩的可以进来看看
  • 酷站网优设网页
  • 课后作业-2025-11-02
  • 一些sparksql的面试题
  • 数据结构(17)
  • 企业级 SaaS 服务 AI 优化全解析:从线索获取到续约的 7 个核心策略
  • MAC-SQL论文 总结
  • 网站挂马怎么处理网站的域名证书
  • 网站关键词优化的方法icp备案网站接入信息ip地址段
  • 高站网站建设网站权重有时降
  • 【Unity】MMORPG游戏开发(八)状态同步与基础战斗模块(上)
  • 最好的大模型训练、微调教程.pdf
  • JAVA算法练习题day61
  • 【IC】NoC设计入门 -- 队头阻塞 (Head-of-Line Blocking)
  • 产品设计可视化解决方案
  • 数据结构(16)
  • 网站建站行业兰州网络推广新手
  • 怎样将自己做的网页加入网站南京品牌网站建设
  • 前端工具全景实战指南,从开发到调试的效率闭环