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;

    }
相关推荐
半个落月2 小时前
LangSmith 全链路观测(下):用 Dataset 与 LLM Judge 量化评估 RA
javascript·langchain
专注仿真2 小时前
引擎扩展性与集成设计深度剖析:从 14 个扩展点到 DIS→HLA 演进之路
开发语言·算法·仿真引擎·推演引擎
码爸2 小时前
支持向量机介绍与示例
算法·机器学习·支持向量机
怕浪猫3 小时前
2028编程圈很火的10个Skills
算法·面试·github
Best-Wishes3 小时前
科来网络分析系统(技术交流版)使用说明书
开发语言·junit·php
半个落月3 小时前
LangSmith 全链路观测(上):用 LangGraph 与 Milvus 构建可追踪的 RAG 客服
javascript·langchain
代码不停3 小时前
自动化测试(java)
java·开发语言·selenium·自动化
半个落月3 小时前
LangChain.js Agent 中间件实战:生命周期、动态工具与文件权限
javascript·langchain
志尊宝5 小时前
Vue3 零基础每日笔记(082):文件上传实战——el-upload 校验、自定义上传、头像预览
前端·javascript·vue.js·笔记·#javascript·#vue.js
鬼手点金5 小时前
opencode-rules 插件
java·开发语言·前端·人工智能·chrome·git·github