寻找最长无重复字符 (leetcode题 )
//javascript 实现
//创建指针,判断指针位置是否和下一个位置相同,如果相同,重新从下一个位置累加,如果不同,将该字符与已经累加的字符比较。
// 如果存在重复的情况,比较第一个字符到第一个重复字符出现的位置的长度 和 最后一个重复字符到第一个重复字符之间的长度,取较大的一个作为暂时的结果,如果相等取后者。但后者继续累加。
//如果不存在重复的情况,继续累加。
function lengthOfLongestSubstring (s) {
//给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
let newS =s;
let res = 0;
let right = 0;
let left = 0;
let m = new Map()
while(right < s.length && left< s.length){
//如果出现重复字符,且重复字符的位置在left之前而不是之后
if(m.has(s[right]) && m.get(s[right]) >= left){
//比较最大长度(考虑从开始到第一次出现重复字符的情况及重复的字符之间的长度)
res = Math.max(res,right-left);
//获取重复的字符上次的位置,更新left。如果比现在left更小的话,不符合条件
left = m.get(s[right])+1;
//更新Map到本次的位置
m.set(s[right],right)
}else{
//如果不是重复字符
//记录当前index
m.set(s[right],right)
}
//指针继续
right++;
//考虑从最后一个重复字符到尾部的长度
res = Math.max(res,right-left);
}
return res;
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)