【leetcode刷题】3.最长不重复子串——Java版

无重复字符的最长子串 (C++) 无重复字符的最长子串 (C++) LeetCode No.3 给定一个字符串,找出不含有重复字符的最长子串的长度。 示例: 给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3。 给定 "bbbbb" ,最长的子串就是 "b" ,长度是1。 给定 "pwwkew" ,最长子串是 & 阅读详情

暴力穷举被一个3w+字符的测试用例教做人 [:吐血]

——leetcode此题热评

前言

这是一条在面试猿辅导一面时的题目,目前需要手写算法的公司不是很多,但小伙伴们也要未雨绸缪,包括一条也是,一直缺乏这方面的训练,话不多说,看题。

Question

难度:中等

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

示例 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 由英文字母、数字、符号和空格组成

Solution 

这道题用暴力穷举法我们不难想到

但是面试,一定会问你,还有别的方法吗?

有,滑动窗口法
  1. 假设有一个可滑动且大小可变的窗口,窗口左端(start)不动,右端(end)向后移动
  2. 当end遇到重复字符,start应该放在上一个重复字符的位置的后一位,同时记录最长的长度
  3. 怎样判断是否遇到重复字符,且怎么知道上一个重复字符的位置?
  4. 用哈希字典的key来判断是否重复,用value来记录该字符的下一个不重复的位置。

Code

class Solution {
    public int lengthOfLongestSubstring(String s) {

        int maxLength=0;
        int start = 0,end=0;
        HashMap<Character, Integer> map = new HashMap<>();
        char[] chars = s.toCharArray();
        while(end<chars.length){
            if (map.containsKey(chars[end])){
                start=Math.max(map.get(chars[end]),start);
            }
            maxLength=Math.max(maxLength,end-start+1);
            map.put(chars[end],end+1);
            end++;
        }
        return maxLength;
    }
}

Result

复杂度分析

  • 时间复杂度:O(N) ,只需要end从0移动到n就可以

 

为了回馈各位粉丝,礼尚往来,给大家准备了一条多年积累下来的优质资源,包括 学习视频、面试资料、珍藏电子书等

怎么领取请大家自己找,寻宝游戏现在开始。

找不到可以评论留言,一条就会注意到你。

如果还不行,请私信我。

 

 

3. 无重复字符的最长子串 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s = “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2: 输入: s = “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。 示例 3: 输入: s = “pwwkew” 输出: 3 解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。 请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列 阅读详情

相关推荐

大厂高频面试系列02--最长不重复子串问题(LeetCode)

大厂高频面试系列02--最长不重复子串问题 题目描述: 给定一个字符串,找出不含有重复字符的最长子串的长度。 举例: 给定"abcabcbb",没有重复字符的最长子串是"abc",那么长度就是3。 给定"bbbbb",最长的子串就是"b",长度是1。 给定"pwwkew",最长子串是"wke",长度是3。请注意答案必须是一个子串,"pwke"是子序列而不是子串。 题目难度:★★★ 题目分析: 要解决最长不重复子串的问题,首先我们应当知道如何找到不含有重复字符的...

IT80hcbz的博客 2032

C++无重复字符的最长子串

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

qq_60740835的博客 1642

【LeetCode刷题笔记(六十八)】之 48. 最长不重复子串长度

本文章由公号【开发小鸽】发布!欢迎关注!!! 老规矩–妹妹镇楼: 一. 题目 (一) 题干         请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。 (二) 示例 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 示例 3: 输入

开发小鸽 288

无重复字符的最长子串(C++)

请你找出其中不含有重复字符的。因为无重复字符的最长子串是。

皮_客的博客 1618

网络调试和分析工具 Proxyman Premium

它支持MacOS、iOS和iPadOS等操作系统,提供丰富的功能,如查看和编辑HTTP/HTTPS请求和响应、设置断点、过滤请求等。Proxyman Premium还支持WebSocket、GraphQL和gRPC等现代网络协议调试,并通过直观且图形化的操作界面,使用户能高效地监控和操纵网络数据流。此外,它还具备多种高级功能,如WebSocket支持、DNS欺骗、自定义SSL证书等,为开发人员提供极大的便利。同时,由于软件版本更新和界面调整,上述步骤可能会有所变化,建议您参考最新版本的官方文档进行操作。

llhf688的博客 1997

不刷机!Jetson AGX Orin无损更新内核与设备树的两种安全方法(附备份恢复脚本)

本文详细介绍了Jetson AGX Orin在不刷机的情况下安全更新内核与设备树的两种方法,包括extlinux.conf动态加载和分区精准刷新方案。通过备份恢复脚本和工业级灾备方案,确保零数据丢失,适用于边缘AI和机器人等关键场景。

weixin_40192258的博客 307

无重复字符的最长子串

无重复字符的最长子串 难度中等5733 给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。 示例1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: s = "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 示例 3: 输入: s = "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是"wke",所以其长度为...

专业^团队的博客 392

伯德图逆向工程:用MATLAB从扫频数据中提取系统特性的5个关键步骤

本文详细介绍了使用MATLAB从扫频数据中提取系统特性的5个关键步骤,包括数据预处理、频响特性提取、相位解缠绕、系统特性反演和结果验证。通过伯德图逆向工程技术,工程师可以有效分析黑箱系统的频率响应特性,解决噪声干扰和相位跳变等实际问题,提升控制系统调试效率。

weixin_29081163的博客 195

(LeetCode1044)最长重复子串:给出一个字符串S,返回其最长重复子串

题目描述 给出一个字符串 S,考虑其所有重复子串(S 的连续子串,出现两次或多次,可能会有重叠)。 返回任何具有最长可能长度的重复子串。(如果 S 不含重复子串,那么答案为 ""。) 方法1:后缀数组法 // 后缀数组法 import java.util.Arrays; class Solution { public String longestDupSubstring(String S...

qq_34826261的博客 2万+

S32K1XX调试--快速定位HardFault

1、背景 程序运行,发现程序跑飞到HardFault,但不清楚为什么会跑到HardFault中断处理函数去。 2、分析 要想知道为什么会跑到HardFault_Handler中去,就很有必要了解一下,程序上一条执行的是那条命令。 根据汇编指令可以定位上条指令,但如果对汇编指令不是很了解的话,那就很头疼了 根据单步运行也能实现定位,但如果程序量很大,又很杂,可能花费的时间就比较久些。 3、问题查找 提供一种不需要懂汇编指令的查找方法,方法如下: 在中断处理函数中插入以下代码,以及另外定义

ping_devil的博客 4018

深空探测处理软件USGS-ISIS的下载安装

深空探测处理软件USGS-ISIS下载安装教程

qq_31721595的博客 3310

LeetCode: 最长重复子串

参考网站:https://leetcode-cn.com/problems/longest-duplicate-substring/ 1. 题目描述 给出一个字符串 S,考虑其所有重复子串(S 的连续子串,出现两次或多次,可能会有重叠)。 返回任何具有最长可能长度的重复子串。(如果 S 不含重复子串,那么答案为 “”。) 示例 1: 输入:“banana” 输出:“ana” 示例 2: 输入...

徐明晓的博客 2951

多模态目标检测综述介绍及框架提供

多模态目标检测是计算机视觉领域的前沿方向,旨在通过融合不同传感器或数据源的信息(如可见光、红外、深度等),提升复杂场景下目标检测的准确性和鲁棒性。

Limiiiing的博客 4585

Leetcode3.最长不重复子串

最长不重复子串题目分析代码代码运行过程个人总结 题目 给定一个字符串,找出不含有重复字符的最长子串的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 无重复字符的最长子串是 "abc",其长度为 3。 示例 2: 输入: "bbbbb" 输出: 1 解释: 无重复字符的最长子串是 "b",其长度为 1。 示例 3: 输入: "pwwkew" 输出: 3 解释: 无重复字符的...

ORI的博客 480

【在 WSL2 GUI 中使用 pulseaudio 播放声音】

最近在搞一个Linux项目,由于WSL2中需要用到声音外放,无奈只能潜心研究。后来就使用了一种折中的方式替代,那就是pulseaudio。目前来讲WSL2对硬件外设的支持还是不太友好,关于USB的支持我之前在其他文章中已经论述过了,这里不讨论。1、Windows11别忘记打开声音2、可能有一定延迟,因为是通过网络传输的。3、效果的话只能见仁见智了,如果不能满足要求就安装一个实实在在的Ubuntu吧!

jiexijihe945的博客 4530

AI Agent Harness自动化漏洞扫描

本文要介绍的AI Agent Harness自动化漏洞扫描方案,正是为了解决传统漏扫的上述痛点而生。漏洞检出率提升35%以上,逻辑漏洞检出率从不足30%提升到92%误报率从27%降到3%以下,人工复核成本降低90%支持自定义业务系统、IoT、工控等多场景资产扫描,适配成本降低80%内置反馈学习机制,扫描效果越用越好AI Agent是指具备自主感知、决策、行动能力的大模型驱动程序,它可以根据给定的目标,自主调用工具、规划步骤、完成任务。

AI 原生应用开发的博客 473

​力扣解法汇总1044-最长重复子串

原题链接:力扣 描述: 给你一个字符串 s ,考虑其所有 重复子串 :即,s 的连续子串,在 s 中出现 2 次或更多次。这些出现之间可能存在重叠。 返回 任意一个 具有最长长度的重复子串。如果 s 不含重复子串,那么答案为 "" 。 示例 1: 输入:s = "banana" 输出:"ana" 示例 2: 输入:s = "abcd" 输出:"" 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/longest-duplicate-s

分享+记录 1183

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

力扣718-最长重复子数组(Java详细题解)

当nums[i - 1] == nums[j - 1],dp[i] [j]是由dp[i - 1] [j - 1](下标i - 2结尾的数组和j - 2为结尾的数组俩个数组的最长公共子序列长度)加上 nums[i - 1] nums[j - 1]这俩个元素相同的长度,也就是1。因为dp数组定义的就是i - 1结尾的数组和j - 1为结尾的数组俩个数组的最长公共子序列,所以只有nums[i - 1] == nums[j - 1]时,他们的dp[i] [j]才能被推出。所以要从左到右,从上到下去遍历。

2302_79761426的博客 1049

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

大厂社招3年-力扣热点高频刷题记录(已更新100+道热点题)

前言: 最近从在大厂出来看机会,大厂面试基本都考察算法,于是维护此文档,一是查缺补漏,确保整体热点算法题目的应知应会,与思路的灵活理解;二是分享出来给其他同学朋友做一个参考借鉴,共同学习成长 目前刷题方向侧重于各大厂热点题,以及力扣的Hot 100 此笔记持续更新。 文章目录一、菜单未分类树栈回溯二分双指针双指针DP贪心二、刷题记录1. 两数相加——哈希——一刷2. 两数相加——链表——二刷3. 无重复字符的最长子串——滑动窗口——三刷5.最长回文串——数组11. 盛水最多的容器——双指针——二刷15. 三

weixin_43899069的博客 3670

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Leetcode3:最长不重复子串

Leetcode3: Longest Substring Without Repeating Characters 具体题目如下: Given a string, find the length of the longest substring without repeating characters. Example 1: Input: “abcabcbb” Output: 3 Explanat...

Flying_sfeng的博客 890

【leetcode刷题】20.最长回文子串——Java版

气死

公号:一条coding 1万+

最长不重复子串

题目来自leetcode. 输入:一个字符串 输出:最长不重复字串长度 例: 输入:abbbbca 输出:3 基本思路:按顺序遍历s,并统计每一个字符s[i]是否出现过,并统计上次出现的位置pos[i]。定义len[i]为下标i结尾的子串的最大长度,则 1)若s[i]未出现过, len[i] = len[i - 1]+1 2)若s[i]出现过,len[i]=min(len[i-1]...

Learning & sharing 339

Leetcode3 最长不重复子串 C++,Java,Python

Leetcode3 最长不重复子串 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters 博主Github:https://github.com/GDUT-Rp/LeetCode 题目: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 ...

Rp的博客 365

力扣杯决赛第3题 寻找一个字符串中的最长重复子串(后缀数组)

原题在:https://leetcode-cn.com/contest/college/2019-spring/problems/longest-repeating-substring/ 参考https://blog.csdn.net/u012114090/article/details/81669021 可使用后缀数组,问题转化为求后缀数组的最长前缀,通过的代码为: import java.u...

qq_23204557的博客 503

LeetCode 3-最长不重复子串(Java版)

1.基本概念 子串:必须连续 子序列:可以不连续 2.做题思路 子串、子序列题型经典解法: 假设子串以i位置结尾的情况下答案是什么?求所有可能的结尾,所有答案的最大值就是答案! i位置上能往左推多长的决定因素: 上一次i出现的位置; 以i-1位置结尾的情况下往左推了多远; 因素1和因素2谁离i最近就是答案。 注:哈希表的增删改查是常数级别,O(1),但是还是没有数组结构来得快;能不用哈希表就不用。哈希表的常数时间比数组大,并没有高阶 代码: class Solution { public int

hoho_965191737的博客 280
上一篇: 【leetcode刷题】2.两数相加——Java版
下一篇: 从月薪6k涨到15k,熬到就只剩下这份Java中高级核心笔记了
Java领域指导者
博客等级 码龄7年 404粉丝 265原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值