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;
    }
}
相关推荐
minji...22 分钟前
Linux 进程信号(二)信号的保存,sigset_t,sigprocmask,sigpending
linux·运维·服务器·网络·数据结构·c++·算法
庞轩px23 分钟前
模拟面试回答第十三问:JVM内存模型
jvm·面试·职场和发展
罗湖老棍子39 分钟前
最大数(信息学奥赛一本通- P1549)(洛谷-P1198)
数据结构·算法·线段树·单点修改 区间求最大值
小O的算法实验室2 小时前
2026年KBS,赏金猎人优化算法+多无人机移动边缘计算与路径规划,深度解析+性能实测
算法·无人机·边缘计算
用户5671504710212 小时前
OpenClaw 记忆管理系统技术文档
算法
935962 小时前
练习题53-60
算法·深度优先
霖大侠3 小时前
Wavelet Meets Adam: Compressing Gradients forMemory-Efficient Training
人工智能·深度学习·算法·机器学习·transformer
AI成长日志3 小时前
【笔面试算法学习专栏】二分查找专题:力扣hot100经典题目深度解析
学习·算法·面试
lcreek3 小时前
流量优化之道:Ford-Fulkerson 最大流算法
算法·
垫脚摸太阳3 小时前
第 36 场 蓝桥·算法挑战赛·百校联赛---赛后复盘
数据结构·c++·算法