LeetCode:剑指 Offer 48. 最长不含重复字符的子字符串
发布日期:2022-09-10 02:23:22
浏览次数:6
分类:技术文章
本文共 835 字,大约阅读时间需要 2 分钟。
请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。
示例 1:
输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
示例 2:
输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
示例 3:
输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
提示:
- s.length <= 40000
注意:本题与主站 3 题相同:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/
解题思路
1.首先定义左指针,新建一个map来存放每个字符和它的索引值
2.然后遍历右指针,若字符已出现过,则左指针右移 3.最后根据左右指针的位置来不断取不含重复字符的子字符串的最大值代码
/** * @param {string} s * @return {number} */var lengthOfLongestSubstring = function(s) { let l = 0 let res = 0 const map = new Map() for(let r = 0; r < s.length; r++) { if(map.has(s[r]) && map.get(s[r]) >= l) { l = map.get(s[r]) + 1 } res = Math.max(res, r - l + 1) map.set(s[r],r) } return res};
转载地址:https://blog.csdn.net/Bertil/article/details/125226066 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关注你微信了!
[***.104.42.241]2024年04月07日 11时48分17秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Dev C++,一个好玩的猜数字游戏
2019-04-27
一场不能只看结果的较量
2019-04-27
细丝极恐的华为251事件
2019-04-27
你手上的PCB怎么制作的?几张动图揭晓工厂生产流程
2019-04-27
C 语言,你真的懂递归了吗?
2019-04-27
漫画:三种 “奇葩” 的排序算法
2019-04-27
让你不再害怕指针.pdf
2019-04-27
一文带你了解V4L2
2019-04-27
Linux 僵尸进程可以被杀死吗?
2019-04-27
最害怕的是,不知道想要什么
2019-04-27
实力剖析一个经典笔试题
2019-04-27
C语言,画吃豆人剖析
2019-04-27
玩转 Rockchip 的开发板,这些信息你要知道
2021-06-30
没有长夜痛哭的人,不足以谈人生
2021-06-30
我和Git的第一次
2021-06-30
内存屏障,先看这篇文章
2021-06-30
自定义协议的这些典型例子你会了吗?
2021-06-30
4岁小女孩给Linux内核贡献提交
2021-06-30
你还会写这段C51程序吗?
2021-06-30
C语言,函数不可返回指向栈内存的指针
2021-06-30