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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:LeetCode:剑指 Offer 54. 二叉搜索树的第k大节点
下一篇:LeetCode:剑指 Offer 42. 连续子数组的最大和

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月07日 11时48分17秒