Leetcode中等:3. 无重复字符的最长子串

【中等】力扣算法题解析LeetCode3:无重复字符的最长子串 题目要求找到字符串中最长无重复字符子串的长度。采用滑动窗口(双指针)优化解法,结合哈希数组记录字符最后出现位置。核心步骤: 初始化窗口指针 start 和哈希数组; 遍历字符串,若字符重复则移动 start 至重复位置的下一位; 实时更新最大窗口长度。 复杂度:时间 O(n),空间 O(1)(固定字符集)。Java代码通过一次遍历实现,高效处理边界情况(如空串或全唯一字符)。 阅读详情

题目:无重复字符的最长子串

  • 题号:3
  • 难度:中等
  • https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/

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

示例 1:

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

示例 2:

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

示例 3:

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

实现

思路:借助动态规划的思路,从前到后求出以每个位置为终止位置,所构成无重复子串的长度,之后求这些长度的最大值即可。

对于任意位置index其最长无重复子串的长度为result[index] = min{k1,k2},k1 = result[index-1] + 1,k2为从index位置往前推直到出现index位置的字符或index=0为止的子串长度。

C# 语言

public class Solution
{
    public int LengthOfLongestSubstring(string s)
    {
        if (string.IsNullOrEmpty(s))
            return 0;
        int[] result = new int[s.Length];
        result[0] = 1;

        for (int i = 1; i < s.Length; i++)
        {
            int count = GetLength(i, s);
            result[i] = result[i-1] < count ? result[i-1]+1 : count;
        }
        return result.Max();
    }
    private int GetLength(int index,string s)
    {
        char c = s[index];
        int result = 1;
        for (int i = index-1; i >= 0; i--)
        {
            if (s[i] != c)
                result += 1;
            else
                break;
        }
        return result;
    }
}

Python 语言

class Solution(object):
    def lengthOfLongestSubstring(self, s):
        """
        :type s: str
        :rtype: int
        """
        if len(s) == 0:
            return 0
        result = list()
        result.append(1)
        for i in range(1, len(s)):
            count = self.GetLength(i, s)
            result.append(result[i - 1] + 1 if result[i - 1] < count else count)
        return max(result)

    def GetLength(self, index, s):
        c = s[index]
        result = 1
        for i in range(index - 1, -1, -1):
            if s[i] != c:
                result += 1
            else:
                break
        return result
【LeetCode Python实现】3. 无重复字符的最长子串(中等) 文章目录题目描述输入描述:输出描述:示例1参考代码 题目描述 输入描述: 输出描述: 示例1 输入: 输出: 参考代码 class Solution: def lengthOfLongestSubstring(self, s: str) -> int: dp = 1 if s else 0 n = len(s) for i in range(n): for j in range(i+1, n): 阅读详情

相关推荐

手把手配置:用Synopsys VDK为英飞凌TC4x系列MCU做虚拟原型开发

本文详细介绍了如何使用Synopsys VDK为英飞凌TC4x系列MCU进行虚拟原型开发,涵盖开发环境搭建、关键外设虚拟化配置、AUTOSAR栈集成及虚拟调试与性能调优全流程。通过虚拟原型技术,开发者可提前6-12个月启动软件开发,显著提升汽车电子项目的开发效率。

weixin_30606461的博客 290

leetcode-3 无重复字符串的最大子串

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

千寻 195

【全开源】旅行吧旅游门票预订系统源码(FastAdmin+ThinkPHP+Uniapp)

此外,系统还会根据我的旅行计划和喜好,为我推荐合适的景点和门票,让我的旅行更加丰富多彩。旅游门票预订系统的出现,不仅简化了门票预订的流程,还提高了旅行的便捷性和效率。一款基于FastAdmin+ThinkPHP+Uniapp开发的旅游门票预订系统,支持景点门票、导游产品便捷预订、美食打卡、景点分享、旅游笔记分享等综合系统,提供前后台无加密源码,支持私有化部署。如今,有了旅游门票预订系统,这些问题都能迎刃而解。智能推荐:系统还会根据你的旅行计划和喜好,为你推荐合适的景点和门票,让你的旅行更加丰富多彩。

2401_84413757的博客 1301

(java)leetcode-取最大长度子字符串

Longest Substring Without Repeating CharactersGiven a string, find the length of the longest substring without repeating characters.Examples:Given "abcabcbb", the answer is "abc", which the length is ...

renl23456的博客 745

FPGA 核脉冲梯形成型 Verilog 实现:从 MATLAB 到 50MHz 采样率部署

本文详细解析了FPGA实现核脉冲梯形成型的完整流程,从MATLAB仿真到50MHz采样率的Verilog硬件部署。重点探讨了梯形成型算法对负指数信号的优化处理,包括定点数量化、流水线架构设计及资源优化技巧,为核辐射探测与高能物理实验提供高效解决方案。

weixin_30920513的博客 389

WSL2不能上网,Failed to connect to github.com port 443问题解决方案

WSL2不能上网: 问题:ping外网无效 例如:ping www.baidu.com失败 解决方案: 在wsl: $sudo vi /etc/wsl.conf wsl.conf: [network] generateResolvConf = false 在PowerShell: $sudo vi /etc/etc/resolv.conf resolv.conf: # This file was automatically generated by WSL. To stop automatic gen

Jason_Chen__的博客 9525

Leetcode题目之求字符串列表的最大前缀子串

题目描述如下: Write a function to find the longest common prefix string amongst an array of strings.If there is no common prefix, return an empty string "". Example 1: Input: ["flower","flow","flight"] ...

程序袁的博客 1007

解决Cursor AI工具地域限制报错的方法与原理

地理围栏(GEO-fencing)是现代云服务常用的访问控制技术,通过IP地址库匹配、支付系统验证等方式实现区域限制。在AI编程工具领域,这种技术常导致类似Cursor出现的'unsupported country region'报错。从技术实现看,服务商会综合HTTP头信息、时区设置等多维度数据进行地理位置判断。开发者可通过调整网络出口、配置本地模型或使用企业版等方案解决。本文以Cursor为例,详细分析了AI工具地域限制的底层原理,并提供了包括Ollama本地部署在内的多种工程实践方案,特别适合需要稳定

weixin_30820077的博客 933

【LeetCode】无重复字符串最长子串

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

luzhensmart的专栏 517

游戏引擎揭秘:大厂为何死磕自研?

游戏引擎本质与商业价值解析 游戏引擎是集成了渲染、物理、动画等核心功能的开发工具包,其价值在于让开发者免于重复编写底层代码,专注于游戏内容创作。商业引擎(如Unity/Unreal)虽降低了开发门槛,但头部厂商仍坚持自研引擎,主要基于以下考量: 经济性:长期项目分摊自研成本后,比商业引擎分成更划算; 可控性:完全掌握底层代码,能针对性优化核心玩法需求; 技术壁垒:专属引擎成为厂商的竞争优势,如米哈游的跨平台渲染技术; 项目适配:超大型游戏(开放世界/MMO)需要深度定制解决方案。 这种"短期高投入

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 263

jre9下载 jdk9

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

leetcode3无重复字符的最长子串(C语言版)

用滑动窗口问题进行解题 int lengthOfLongestSubstring(char * s){ int size = 0; int num= 0; int i = 0,j = 0,k = 0; size = strlen(s); for(j = 0;j < size; j++){ for(k = i;k < j; k++){...

喂他柠檬茶的博客 1284

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

算法-无重复字符的最长子串(力扣-3)难度:中等

算法-无重复字符的最长子串题目:力扣-3:无重复字符的最长子串 ,难度:中等描述:示例1:示例 2:示例 3:示例 4:提示:编码实现:方法1:暴力方法:双循环分析:该算法为暴力无脑解法,其时间复杂度为O(n^3),空间复杂度为O(m)优化算法:滑动窗口法编码实现(滑动窗口):分析:时间复杂度为 O(n),空间复杂度为 O(|E|) 其中 E 代表可能出现的无重复的字符集的个数,默认为所有的ASCII 码在 [0,128)内可能出现的字符。 题目:力扣-3:无重复字符的最长子串 ,难度:中等 描述: 给定一

java-xiang 642

IMSL CNL 7.0.0 (x86-64)Crack

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

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

leetcode力扣第3题:无重复字符的最长子串(中等)

leetcode力扣第3题:无重复字符的最长子串(中等)

weixin_44458771的博客 264

LeetCode_3_中等_无重复字符的最长子串

LeetCode_3:无重复字符的最长子串(中等)

Linshaodan520的博客 1556

【LeetCode 3-中等】无重复字符的最长子串(高清截图)

3. 【中等】无重复字符的最长子串 https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/ 给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。 示例 1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是"abc",所以其长度为3。 示例 2: 输入: s = "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是"b",所以其长度为

COFACTOR 4321

leetcode: 3 无重复字符的最长子串 中等难度

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

qq_33373173的博客 238

【LeetCode练习】[中等]3. 无重复字符的最长子串

【LeetCode练习】3. 无重复字符的最长子串 3. 无重复字符的最长子串 题目来源link 算法思想:滑动窗口; 分析来源link 滑动窗口,保证每个窗口里字母都是唯一的 使用 int[] m 来记录一个字母,如果后面出现重复时,i 应该调整到的新位置,所以每次更新的时候都会保存 j + 1 ,即字母后面的位置 j 表示子串的最后一个字母,计算子串长度为 j - i + 1 java代码 class Solution { public int lengthOfLongest

qq_39457586的博客 900

LeetCode-3、无重复字符的最长子串-中等

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

clover_my的博客 211

【力扣中等题】#3 无重复字符的最长子串

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

qq137624351的博客 135

LeetCode [中等]3. 无重复字符的最长子串

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

Theolulu的博客 298

专题二 - 滑动窗口 - leetcode 3. 无重复字符的最长子串 | 中等难度

专题二 - 滑动窗口 - 哈希表

分享简单技术,记录点滴成长 1440

leetcode-_3_无重复字符的最长子串_中等

/** * 以 (a)bcabcbb 开始的最长字符串为 (abc)abcbb * 以a(b)cabcbb 开始的最长字符串为 a(bca)bcbb */ public static int lengthOfLongestSubstring(String s) { // 哈希集合,记录每个字符是否出现过 Set<Character> occ = new HashSet<Character>(); ..

纸上得来终觉浅,绝知此事要躬行 228

LeetCode-3-算法-无重复字符的最长子串(中等)

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

Hello_JavaScript的博客 3450

(中等)LeetCode 3. 无重复字符到的最长子串 Java

当我们一次递增地枚举子串的起始位置,会发现子串的结束位置也是递增的,原因在于,假设选择字符串中的第k个字符作为起始位置,并且得到了不包含重复字符的最长子串的结束位置为。在左指针向右移动的时候,从哈希集合中移除一个字符,在右指针向右移动时,向哈希集合中添加一个字符。的字符显然是不重复的,并且由于少了原来的第k个字符,可以尝试继续增大。,那么,从第k+1个字符作为起始位置时,首先从k+1到。,那么,其中最长的那个字符串即为答案。,直到右侧出现重复字符为止。

guliguliguliguli的博客 593
上一篇: Leetcode 中等:2. 两数相加
下一篇: Leetcode中等:7. 整数反转
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青少年编程小助手_Python

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值