【LeetCode】【算法】3. 无重复字符的最长子串

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

题目描述

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

思路

思路:滑动窗口+哈希表

  1. 定义两个指针i,j,快指针j先走,将遍历到的字符都加入到哈希表map中,并通过Math.max()来找到res, j-i中的最大值(最长重复子串)
  2. 若遇到某个字符,在map中已经出现过(重复了),则慢指针i直接走到j的位置

代码

java 复制代码
class Solution {
    public int lengthOfLongestSubstring(String s) {
        // 滑动窗口加哈希表
        Map<Character, Integer> map = new HashMap<>();
        int i = -1, res = 0, len = s.length();
        for (int j = 0; j < len; j++) {
            if (map.containsKey(s.charAt(j))) i = Math.max(i, map.get(s.charAt(j))); // 更新左指针
            map.put(s.charAt(j), j); // 哈希表记录
            res = Math.max(res, j - i); // 在遍历的过程中不断更新字符串长度
        }
        return res;
    }
}
相关推荐
leobertlan14 小时前
好玩系列:用20元实现快乐保存器
android·人工智能·算法
青梅橘子皮14 小时前
C语言---指针的应用以及一些面试题
c语言·开发语言·算法
_深海凉_15 小时前
LeetCode热题100-有效的括号
linux·算法·leetcode
被开发耽误的大厨18 小时前
1、==、equals、hashCode底层原理?重写场景?
算法·哈希算法
WolfGang00732118 小时前
代码随想录算法训练营 Day38 | 动态规划 part11
算法·动态规划
松☆19 小时前
C++ 算法竞赛题解:P13569 [CCPC 2024 重庆站] osu!mania —— 浮点数精度陷阱与 `eps` 的深度解析
开发语言·c++·算法
jr-create(•̀⌄•́)20 小时前
正则化和优化算法区别
pytorch·深度学习·神经网络·算法
li星野21 小时前
刷题:数组
数据结构·算法
tankeven21 小时前
HJ182 画展布置
c++·算法
CS_Zero1 天前
无人机路径规划算法——EGO-planner建模总结—— EGO-planner 论文笔记(一)
论文阅读·算法·无人机