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

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

子串

的长度。

示例 1:

复制代码
输入: s = "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。

示例 2:

复制代码
输入: s = "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。

示例 3:

复制代码
输入: s = "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
     请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

思路:求不重复最长子串,采用双指针+哈希表实现

先从头遍历每个字符 设指针k=-1 当头指针为i=0 也就是第一个字符 此时子串为1(i-k)

如果每个字符不同就放到哈希表中,字符相同就更新指针k,指向最近一次相同字符所出现的位置

java 复制代码
 HashMap<Character, Integer> map = new HashMap<>();
        int k =-1;
        int res=0;
        for (int i = 0; i <s.length(); i++) {

            if(!map.containsKey(s.charAt(i)))
                map.put(s.charAt(i),i);

             else
                { map.put(s.charAt(i), i);//需要更新最新出现字符的哈希表
                k = Math.max(k, map.get(s.charAt(i)));
             }


                res = Math.max(res,i-k);



        }


      return res;

    }
相关推荐
wdfk_prog15 分钟前
canopennode-rtt推荐,不只可以做从站,也可以承担主站角色
c语言·开发语言·数据库·学习·算法·深度优先
启观川24 分钟前
Python基础-第 16 章 综合案例:客户信息管理系统
开发语言·笔记·python·正则表达式
无小道28 分钟前
C/C++——可变参数
c语言·开发语言·c++·可变参数
BioRunYiXue35 分钟前
科研干货 | IC50全面解读:概念解析、实验设计与数据分析要点
java·开发语言·javascript·人工智能·算法·数据挖掘·数据分析
hahaha601635 分钟前
HLS高层次综合设计技巧--UART_TX接收模块设计案例
人工智能·算法·计算机视觉
边境悍匪35 分钟前
蜗牛学苑 Java 智能体学习 Day34|AOP 进阶、权限思维导图复盘
java·开发语言·spring boot·学习
302wanger39 分钟前
一个程序员看完《逆行人生》:电影没说透的,比电影更扎心
算法
hele_two40 分钟前
C++模拟蚁群(二)
c++·算法·数学建模·图形渲染
WK100%43 分钟前
LeetCode双题:滑动窗口破解最小子数组
c++·经验分享·笔记·算法
sheeta19981 小时前
LeetCode 每日一题笔记 日期:2026.09.02 题目:3875.构造奇偶一致的数组 I
笔记·算法·leetcode