Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >03.无重复字符的最长子串

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

作者头像
taixingyiji
发布于 2022-07-25 08:11:18
发布于 2022-07-25 08:11:18
21100
代码可运行
举报
运行总次数:0
代码可运行

# 03.无重复字符的最长子串

难度:中等

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

示例 1:

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

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

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

输入: s = "" 输出: 0

提示:

0 <= s.length <= 5 * 104 s 由英文字母、数字、符号和空格组成

# 队列

# 思路

有重复则直接抛出队列

# 代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution {
    public static int lengthOfLongestSubstring(String s) {
        Queue<Character> queue = new LinkedList<>();
        int length = 0;
        for (char c:s.toCharArray()){
            while (queue.contains(c)) {
                queue.poll();
            }
            queue.add(c);
            length = Math.max(length, queue.size());
        }
        return length;
    }
}

# Set方法

# 思路

判断是否重复,重复的话将重复元素从set集合中移除,获取set.size

# 代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution {
    public int lengthOfLongestSubstring(String s) {
        int left = 0, right = 0, max = 0;
            Set<Character> set = new HashSet<>();
            while (right < s.length()) {
                if (set.contains(s.charAt(right))) {
                    set.remove(s.charAt(left++));
                } else {
                    set.add(s.charAt(right++));
                    max = Math.max(max, set.size());
                }
            }
            return max;
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-01-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
3. 无重复字符的最长子串
给定 “abcabcbb” ,没有重复字符的最长子串是 “abc” ,那么长度就是3。
张伦聪zhangluncong
2022/10/26
2150
【刷穿 LeetCode】3. 无重复字符的最长子串(中等)
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
宫水三叶的刷题日记
2021/02/20
4010
3. Longest Substring Without Repeating Characters(无重复字符的最长子串)
Given a string, find the length of the longest substring without repeating characters.
砖业洋__
2023/05/06
1350
3. Longest Substring Without Repeating Characters(无重复字符的最长子串)
【图解】三种解法不断优化带你手撕 LeetCode第三号题:无重复字符的最长子串
索引从字符串的第一位开始,将后面的字符依次加入到 set 里面。如果 set 里面已经有了该字符,此次循环结束,内循环结束后记录 size。字符串的每一位都用这种方法去计算,得到的最大的 size 即是答案。
帅地
2019/12/19
7840
【图解】三种解法不断优化带你手撕 LeetCode第三号题:无重复字符的最长子串
【刷题计划】无重复字符的最长子串
输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:
你呀不牛
2021/12/02
2200
3. 无重复字符的最长子串
示例 1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: s = "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 示例 3: 输入: s = "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。 class So
编程张无忌
2021/06/21
2070
LeetCode 3: 无重复字符的最长子串
Given a string, find the length of the longest substring without repeating characters.
爱写bug
2019/12/02
5080
leetcode刷题(3)——无重复字符的最长子串
输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2:
老马的编程之旅
2022/06/22
2000
LeetCode【3】-- 无重复字符的最长子串
链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters
秦怀杂货店
2022/02/15
2700
画解算法 3-无重复字符的最长子串
https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/
灵魂画师牧码
2019/06/27
3560
画解算法 3-无重复字符的最长子串
【LeetCode】无重复字符串最长子串
这道题的目标是找出最长子串,并且该子串必须不包含重复字符,而且这个子串必须是原字符串中连续的一部分(见示例3中的解释说明)。
弗兰克的猫
2019/05/25
1.1K0
LeetCode-3 无重复字符的最长子串
LeetCode前几道题都是经典题,今天我们学习第3题无重复字符的最长子串,这道题在秋招面试中遇见过,再次相遇,如此亲切。下面我们看看这道题的题目描述。
用户3470542
2019/06/26
4350
LeetCode-3 无重复字符的最长子串
LeetCode3--无重复前缀的最长子串(java实现)
一、问题引入: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 示例 3: 输入: "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,
别团等shy哥发育
2023/02/27
2340
LeetCode3--无重复前缀的最长子串(java实现)
Java实现给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度 输入: "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。 题解 : 有点难度哈: 1 开一个哈希集合(不能有重复key) 2 开一个 头指针 尾部指针 和最大值长度ans 3 头指针不断后移, 不断往集合里面塞元素( 如果遇到集合里面有的key ,更新key的Value
编程张无忌
2021/01/26
8950
Leetcode 3. 无重复字符的最长子串 (滑动窗口+HashMap)
输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2:
glm233
2020/09/28
2690
无重复字符的最长子串
本题是计算最长的不重复子串,而子串肯定是连续的。我们肯定都能想到,要遍历下输入的字符串,那么遍历的过程中,我们需要做什么呢?既然是计算字串的长度,那么我们遍历的过程中就要将字串保存下来。同时,每次保存新的字符的时候,需要判断原有的子串中是否包含了这个字符,如果包含了,那么我们要从字串的第一个字符开始,一直删除字符,直到不存在即将要加入的字符,然后计算当前子串的长度,与之前计算的长度比较,取较大值。拿 abcdefce 举例,我们遍历到第二个c字符的时候,已有的不含有重复字符的子串是 abcdef ,当要把c加入到已有的子串的时候,需要将前面的 abc 删除,那么新的子串为 defc。由于子串有后进后出的特性,于是我们使用队列来保存子串。
零式的天空
2022/03/24
4250
LeetCode 数据结构与算法无重复字符的最长子串长度详解
我们可以利用 hash 来判断不重复子串。如果 hash 表中存在该字符串,就进入下次循环;如果不存在,就放入集合中然后在再移动右指针。
PHP开发工程师
2022/04/12
2820
LeetCode-3-无重复字符的最长字串
首先挨个比较i个字符和i+1结合哈希的方法是失败的,这样求的不适用于dvdf这样的测试用例
benym
2022/07/14
1930
leetcode 3. 无重复字符的最长子串 js 实现
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: s = "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 示例 3: 输入: s = "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。   请注意,你的答案必须是 子串 的长度,"pwke"
蓓蕾心晴
2022/11/21
5840
leetcode 3. 无重复字符的最长子串 js 实现
LeetCode3. 无重复字符的最长子串
这题也是滑动窗口类型,判断窗口内是否有重复值时,我使用的是集合+队列。集合判断是否重复,队列记录窗口位置。解题后看了下题解,才发现滑动窗口类型确实做少了,这题明明可以用通用解法:下标+map,下标记录窗口位置,map判断是否重复(泛型为<字符,出现的次数>)。
Yuyy
2022/06/28
1690
推荐阅读
相关推荐
3. 无重复字符的最长子串
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验