LeetCode Hot100 3.无重复字符的最长子串

题目描述

给定一个字符串 s ,请你找出其中不含有重复字符的 最长 子串 的长度。

3. 无重复字符的最长子串 - 力扣(LeetCode)

思路

维护一个滑动窗口,保证滑动窗口内的子串无重复字符。当一个新字符即将进入窗口时,需要判断该字符是否在窗口中出现过,这个时候就需要使用hashmap保存字符及字符最后出现的下标。

如果新字符在map里出现过,但不一定存在于窗口中,为了防止指针回退,写成

java 复制代码
l=Math.max(l,map.get(c)+1);

代码

java 复制代码
class Solution {
    public int lengthOfLongestSubstring(String s) {
        HashMap<Character,Integer> map = new HashMap<>();
        int l=0,maxLen=0;
        for(int r=0;r<s.length();r++){
            char c=s.charAt(r);
            if(map.containsKey(c)){
                l=Math.max(l,map.get(c)+1);
            }
            map.put(c,r);
            maxLen=Math.max(maxLen,r-l+1);
        }
        return maxLen;
    }
}
相关推荐
好学且牛逼的马1 小时前
【Hot100|23-LeetCode 234. 回文链表 - 完整解法详解】
算法·leetcode·链表
小冻梨6661 小时前
ABC444 C - Atcoder Riko题解
c++·算法·双指针
菜鸡儿齐1 小时前
leetcode-找到字符串中所有字母异位词
算法·leetcode·职场和发展
不想看见4041 小时前
Combinations -- 回溯法--力扣101算法题解笔记
数据结构·算法
凤年徐1 小时前
优选算法——双指针专题 3.快乐数 4.盛水最多的容器
开发语言·数据结构·c++·算法
隔壁大炮2 小时前
第二章 多层神经网络
人工智能·深度学习·神经网络·算法
流云鹤2 小时前
2026牛客寒假算法基础集训营1(B C E G K L)
c语言·算法
你怎么知道我是队长2 小时前
C语言---排序算法9---堆排序法
c语言·算法·排序算法
若水不如远方2 小时前
分布式一致性原理(四):工程化共识 —— Raft 算法
分布式·后端·算法