LeetCode 之 Longest Substring Without Repeating Characters

【力扣Leetcode题解系列之0003. Longest Substring Without Repeating Characters 解题全析】 本文详细解析了力扣第3题“无重复字符的最长子串”的两种高效解法:滑动窗口法和一次遍历字典法。滑动窗口法通过双指针维护无重复字符区间,时间复杂度O(n);字典法记录字符位置实现单次遍历,同样O(n)复杂度。文章提供了Python、C++和Go三种语言的实现代码,并分析了算法的时间与空间复杂度。该题考察字符串处理与数据结构运用能力,是算法学习的经典范例。 阅读详情

题目链接:Longest Substring Without Repeating Characters
这道题就是从字符串中选择出多长的无重复元素的子字符串
首先可以使用暴力搜索的方式,使用双重循环找出所有的子字符串,但是会出现超时。
于是,参照方法https://leetcode.com/articles/longest-substring-without-repeating-characters/
使用了滑窗的方式,设置指针i指向无重复字符串的头部,设置指针j,以及hashset保存无重复的元素,如果str.charAt(j)没有在hashset中,则将其加入,j向前移动,并记录此时的字符串的长度,如果已经存在了,则将str.charAt(i)移除,并向前移动。
代码如下:

class Solution {
    public int lengthOfLongestSubstring(String s) {
        int len = s.length();
        HashSet<Character> hashset = new HashSet<Character>();
        int i = 0, j = 0;
        int re = 0;
        while(i<len&&j<len){
            if(hashset.add(s.charAt(j))){
                j++;   
                re = Math.max(re,j-i);
            }
            else{
                hashset.remove(s.charAt(i));
                i++;
            }   
        }
        return re;
    }
}

改进:刚发现重复元素时,不用一步步的移动i,而是直接将i移到重复元素的下一位,这样便可以保证,i和j之间不存在重复元素
代码如下:

class Solution {
   public int lengthOfLongestSubstring(String s) {
        int len = s.length();
        HashMap<Character, Integer> hashmap = new HashMap<Character, Integer>();
        int i = 0, j = 0;
        int re = 0;
        while(i<len&&j<len){
            if(hashmap.containsKey(s.charAt(j)))
                i = Math.max(hashmap.get(s.charAt(j))+1, i);
            hashmap.put(s.charAt(j),j);
            j++;   
            re = Math.max(re,j-i);

        }
        return re;
    }
}
脑肿瘤MRI图像分割实战:基于U-Net的深度学习完整指南 脑肿瘤是中枢神经系统最常见的疾病之一,全球每年有超过30万人被诊断为原发性脑肿瘤。在临床诊断和治疗过程中,磁共振成像(MRI)已成为评估脑肿瘤的标准影像学检查方法。然而,手动分割MRI图像中的肿瘤区域是一项耗时且依赖于专家经验的工作,不同医生之间可能存在显著差异。 阅读详情

相关推荐

WPF 解决listview值更改时页面没有刷新

WPF 解决listview值更改时页面没有刷新。

weixin_52475977的博客 1385

Leetcode 3 Longest Substring Without Repeating Characters

Leetcode 3 Longest Substring Without Repeating Characters Given a string, find the length of the longest substring without repeating characters. Example 1: Input: "abcabcbb" Output: 3 Explanation: Th...

博学 笃志 切问 近思 159

从零开始掌握OBD-II:汽车诊断开发的核心技术与实战解析

本文深入解析OBD-II汽车诊断系统的核心技术,包括ECU通信协议、故障码解析及诊断工具开发实战。通过详细的协议分析和代码示例,帮助开发者快速掌握汽车诊断开发技能,实现从零到精通的进阶。特别适合从事汽车电子开发和OBD检测的技术人员参考学习。

weixin_42528780的博客 438

[LeetCode]——Longest Substring Without Repeating Characters

作为模式识别的图像狗,越发觉得毕业找工作还是得coding! 痛定思痛,入了leetcode的深坑! 在提交了无数次以后,Accepted终于向俺招手了~ 虽说复杂度高了点,但是作为一个学渣,能看到Accepted这辈子也值了!class Solution { public: int lengthOfLongestSubstring(string s) { str

vashzx的专栏 456

ControlCAN.dll开发适配USBCAN_E/2E_U设备

摘要:本文提供了USBCAN_E/2E_U设备的配置指南:1)安装专用驱动;2)获取最新的ControlCAN.dll文件;3)修改VCI调用顺序,新增VCI_SetReference函数设置波特率;4)使用工具计算波特率配置值,并给出了常见波特率对应的代码参考值(如500K对应0x060007)。配置过程强调使用特定工具计算精确的波特率参数,并提供了相关软件下载链接。

weixin_43969033的博客 387

200_matlab处理NCEP数据并画全球彩色的风场图

200_matlab处理NCEP数据并画全球彩色的风场图。

miaobo0的博客 1237

leetcode--3. Longest Substring Without Repeating Characters

尺取法 首先设置头尾两个指针,都指向头,然后尾指针开始遍历,在遍历过程中记录每个字母出现个数,每次遍历若当前字母没有出现过,则更新答案长度。若出现过,则将头指针移到重复字母的后面一位。然后继续重复上述操作。最后返回答案即可。 class Solution { public: int lengthOfLongestSubstring(string s) { if(s.le

林伏案的博客 458

MFRC522防冲突机制详解:当两张IC卡同时靠近读写器,会发生什么?

本文深入解析了MFRC522芯片在多张IC卡同时靠近RFID读写器时的防冲突机制,重点介绍了二叉树搜索算法在比特级的实现原理。通过详细的寄存器配置优化和实际工程案例,展示了如何有效解决信号碰撞问题,提升多卡场景下的读写性能。

weixin_29191669的博客 428

闯关leetcode——3.Longest Substring Without Repeating Characters

leetcode第三题

方亮的专栏 1340

【大模型应用开发-大模型知识】(二)大模型分类和常见大模型

目前包含 Claude 和 Claude-Instant 两种模型可供选择,其中 Claude Instant 的延迟更低,性能略差,价格比完全体的 Claude-v1 要便宜,两个模型的上下文窗口都是 9000 个token(约 5000 个单词,或 15 页)它的目标是“更安全”、“危害更小”的人工智能。Google 还开发了多种 PaLM 的改进版本。更强大的基础模型: ChatGLM3-6B 的基础模型 ChatGLM3-6B-Base 采用了更多样的训练数据、更充分的训练步数和更合理的训练策略。

1万+

Python爬虫实战:利用Scrapy+Playwright高效爬取TED演讲数据

在当今信息爆炸的时代,TED演讲作为全球知名的思想传播平台,汇聚了各领域顶尖人才的精彩分享。对于数据分析师、研究人员或内容创作者来说,获取TED演讲的完整数据集具有重要价值。本文将详细介绍如何使用Python中最先进的爬虫技术组合——Scrapy框架配合Playwright浏览器自动化工具,高效爬取TED演讲的完整数据。传统爬虫技术在处理现代动态网页时面临诸多挑战,而本文将展示如何利用最新工具解决这些问题。

2201_76125261的博客 205

[LeetCode] 3. Longest Substring Without Repeating Characters 最长不重复子串

[LeetCode] 3. Longest Substring Without Repeating Characters Given a string, find the length of the longest substring without repeating characters. Example 1: Input: "abcabcbb" Output: 3 Expla...

weixin_30795127的博客 110

YOLOv11改进 | 损失函数改进篇 | MPDIoU、InnerMPDIoU助力细节涨点(二次创新 + 代码解析)

本文为读者详细介绍了YOLOv11模型的最新改进,带来的改进机制是最新的损失函数MPDIoU和融合了最新的Inner思想的InnerMPDIoU(效果打爆之前的所有的损失函数提升检测精度和处理细节方面的作用。通过深入探讨MPDIoU和InnerMPDIoU(全网首发)的工作原理和实际代码实现,本文旨在指导读者如何将这些先进的损失函数技术应用到YOLOv11模型中,以提高其性能和准确性。文章内容涵盖从理论基础、代码实现,到实际教你如何添加本文的机制到你的模型中。

Snu77的博客 4023

[LeetCode]3. 无重复字符的最长子串(Longest Substring Without Repeating Characters)题解

在leetcode中该题网址:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/ 题目描述: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 ...

sultry_yi的博客 524

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

LeetCode题解 C++ Longest Substring Without Repeating Characters

LeetCode题解 Longest Substring Without Repeating Characters

Caffey 443

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【Leetcode】Longest Substring Without Repeating Characters

题目链接:https://leetcode.com/problems/longest-substring-without-repeating-characters/ 题目: Given a string, find the length of the longest substring without repeating characters. Examples: Give

业精于勤,荒于嬉 3185

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【Leetcode】3. Longest Substring Without Repeating Characters

题目地址: https://leetcode.com/problems/longest-substring-without-repeating-characters/ 题目大意是,给定一个字符串,求其中的一个子串不含重复字母,返回其长度。可以用双指针来做,用一个map保存快指针遍历到jjj的时候s[0,...,j]s[0,...,j]s[0,...,j]所有字母最后出现的位置,快指针从000向后遍......

数学、算法爱好者的博客 564

LeetCode力扣之Longest Substring Without Repeating Characters

Given a string, find the length of the longest substring without repeating characters.Examples:Given "abcabcbb", the answer is "abc", which the length is 3.Given "bbbbb", the answer is "b", with the l...

LeeWei 145

Leetcode第三题《Longest Substring Without Repeating Characters》

Leetcode第三题《Longest Substring Without Repeating Characters》 题目: Given a string, find the length of the longest substring without repeating characters. For example, the lo...

weixin_30361641的博客 97

LeetCode -- Longest Substring Without Repeating Characters

题目描述:Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters for "abcabcbb" is "abc", which the length is 3.

我的英文站点:https://iorilan.medium.com/ 1769

LeetCode.3-最长无重复字符子串(Longest Substring Without Repeating Characters)

这是悦乐书的第341次更新,第365篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Medium级别的第2题Longest Substring Without Repeating Characters(顺位题号是3)。给定一个字符串,找到最长无重复字符子字符串的长度。例如: 输入:“abcabcbb” 输出:3 说明:答案是“abc”,长度为3。 输入:“bbbbb” 输出:1 说...

小川的博客 209

LeetCode Longest Substring Without Repeating Characters

原题链接在这里:https://leetcode.com/problems/longest-substring-without-repeating-characters/ String 题目,基本思路就是维护一个窗口[walker,runner]. walker,runner都是向右移,同时维护一个HashSet hs,用来存储这一段中的所有不同character。首先右侧窗口runner在前跑

Dylan_Java_NYC的博客 582

Leetcode之Longest Substring Without Repeating Characters 问题

问题描述: Given a string, find the length of the longest substring without repeating characters. 示例: Given "abcabcbb", the answer is "abc", which the length is 3. Given "bbbbb", the answer is "b", wit

漫漫学习路 305

【LeetCode】3. Longest Substring Without Repeating Characters

题目: Given a string, find the length of thelongest substringwithout repeating characters. Example 1: Input: "abcabcbb" Output: 3 Explanation: The answer is "abc", with the length of 3. Exampl...

希望的专栏 446

leetcode Longest Substring Without Repeating Characters

var lengthOfLongestSubstring = function(s) { let curr = 0; let valuePos = new Map(); const len = s.length; if(len==0) { return 0; } for(let i=0,j=0;i&l...

weixin_42424269的博客 484

ACM之LeetCode中Longest Substring Without Repeating Characters

原题信息: Given a string, find the length of the longest substring without repeating characters. Examples: Given "abcabcbb", the answer is "abc", which the length is 3. Given "bbbbb", the

Microstrong 627
上一篇: LeetCode 之 String to Integer (atoi)
下一篇: LeetCode 之 Median of Two Sorted Arrays
小菜鸟要高飞
博客等级 码龄12年 14粉丝 77原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值