leetcode题解-3. Longest Substring Without Repeating Characters

lengthOfLongestSubstring.c.txt 1. i 指向窗口起始字符,j 指向窗口结尾字符,lastPos是一个hash表,用来记录字符出现的位置; 2. 当字符出现的位置小于起始位置i,则继续扩大当前窗口,否则更新窗口起始位置; 立即下载

题目: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 length of 1.
Given “pwwkew”, the answer is “wke”, with the length of 3. Note that the answer must be a substring, “pwke” is a subsequence and not a substring.

本题是想获得s中不重复的子串,最简单的方法就是使用set保存已经遍历过的字符,一旦出现重复便记录该字符串长度即可,这种方法因为重复率较高,所以效率很低,只击败了4%的用户。代码入下:

    public static int lengthOfLongestSubstring(String s) {
        if(s.length() < 2)
            return s.length();
        int res = 0;
        for(int i=0; i<s.length()-1; i++){
            Set<Character> map = new HashSet<>();
            map.add(s.charAt(i));
            int j = i+1;
            for(; j<s.length(); j++)
                if(!map.add(s.charAt(j)))
                    break;
            res = Math.max(res, j-i);
        }
        return res;
    }

方法二,使用map来保存每个字符的索引位置信息,然后引入j游标记录字符串左边的起始位置,遍历索引i相当于其右边结束位置。这里需要注意的是,j更新的时候要更新为j和map.get(s.charAt(i))+1二者中较大的一个。比如“abba”,当遍历到第二个a时,j应该保持为原始的2,而不应该为第一个a的下一个(即1)。代码入下,这种方法可以击败64%的用户:

    public int lengthOfLongestSubstring1(String s) {
        if (s.length()==0) return 0;
        HashMap<Character, Integer> map = new HashMap<Character, Integer>();
        int max=0;
        for (int i=0, j=0; i<s.length(); ++i){
            if (map.containsKey(s.charAt(i))){
            //注意这里一定要将j赋值为二者的最大值,以防出现上面所说的情况
                j = Math.max(j,map.get(s.charAt(i))+1);
            }
            map.put(s.charAt(i),i);
            max = Math.max(max,i-j+1);
        }
        return max;
    }

方法三,使用数组来代替map,这是一种常用的方法。将map的key作为数组的索引,value作为数组的值进行转化。代码入下,可以击败97%的用户:

    public int lengthOfLongestSubstring2(String s) {
        int[] mOccur = new int[256];
        int maxL = 0;
        for(int i = 0, j = 0; i < s.length(); ++i){
            char ch = s.charAt(i);
            ++mOccur[ch];
            //注意这个循环的作用,对于“abba”,先将a取出,再将一个b取出。对于“abcab”直接将a取出即可。非常机智的做法
            while(mOccur[ch] > 1){
                --mOccur[s.charAt(j++)];
            }
            maxL = Math.max(maxL, i - j + 1);
        }
        return maxL;
    }
大模型和任务型对话系统如何结合 三种方法都是基于prompt1.prompt中定义大量可分类的domain标签,每种标签含有的样例。走对话系统nlu常规步骤,domain分类,意图分类,slot提取等。缺点:需要很复杂的prompt,写的未必完善。需要多次调用llm2.prompt中定义每种query下可以调用的functioncall。3.也是基于prompt,可以管理对话主题,实现更丰富的话题流转。面向某个具体领域,没有细分的domain类别。 阅读详情

相关推荐

esp32c6 开发实战:低功耗蓝牙(BLE)开发

蓝牙栈在此程序流程中已经启动并运行,但是应用程序的功能尚未定义。功能的定义是通过响应事件来实现的,当其他设备尝试读取或写入参数以及建立连接时就会触发事件回调函数处理。BT控制器在控制器端实现主机控制器接口(HCI),链路层(LL)和物理层(PHY)。BT控制器对用户应用程序不可见,并处理BLE堆栈的较低层。蓝牙堆栈(Bluedroid stack)定义了经典蓝牙(BT Classic)和低功耗蓝牙(BLE)的通用定义和API。的判断)等对于启动低功耗蓝牙来说不重要的代码,函数初始化和启用BT控制器。

月入鱼饵的博客 2742

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

题目: 自己的代码: class Solution { public int lengthOfLongestSubstring(String s) { if(s.length() <= 1){ return s.length(); } char[] arr = s.toCharArray(); Set<Character> set = new HashSet<>(); ..

weixin_49693003的博客 1124

MPLAB修改工程名称方法

修改工程名称方法 如下图所示,工程名称为:Loar_V1.0_20210205 现将该工程名称修改为:Loar_V1.1_20210205 修改方法: ①找到工程文件路径,将工程名称修改为Loar_V1.1_20210205 注意:此时打开变成进行编译,会报错:Loar_V1.1_20210205.production.hex does not exist or is not an executable, ②找到工程下的 nbproject 文件夹 ③将nbproject文件夹下的文件全部打开,并且将

qq_26195179的博客 1759

lengthOfLongestSubstring

LeetCode 链接 : https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/description/  题目: 无重复字符的最长子串给定一个字符串,找出不含有重复字符的 最长子串 的长度。示例:给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3。给定 "...

wenke8619的博客 1851

liquibase扩展支持达梦数据库

近期项目中需要支持国产数据库,需要liquibase底层支持达梦数据库,记录下操作的详细步骤以便分享。 1.liquibase支持的数据库很多如MySQL, PostgreSQL, Oracle, Sql Server, DB2。但是达梦数据库并不支持,所以需要新建DMDatabase类来适配达梦数据库。达梦语法和Oracle很像所以只需要复制liquibase-core下的Oracle Database做些修改就可了。以下为需要修改的地方 public class DMDatabase extends A

qq_43677719的博客 5472

Python 爬虫实战:简易爬取知乎回答内容

本文详细介绍了使用Python爬取知乎回答内容的实战方法。通过分析知乎异步加载API接口,讲解如何构建带反爬策略的爬虫代码,包括请求头设置、JSON数据解析和内容清洗等核心步骤。文章提供了完整可运行的代码示例,并针对多页爬取、数据保存和反爬升级给出优化建议。同时强调爬虫使用的合规性,帮助新手快速掌握动态网页爬取的核心技巧,实现从静态到动态网页爬虫的进阶。

2503_91057718的博客 2196

lc 第三题 lengthOfLongestSubstring 无重复字符的最长子串

lc 第三题 lengthOfLongestSubstring 无重复字符的最长子串

LINSJGM的博客 320

【深度学习总结_02】在自己的数据集微调SAM

使用医疗影像数据微调SAM

qq_41234663的博客 1万+

【Leetcode】3 lengthOfLongestSubstring python解法

lengthOfLongestSubstring 无重复字符最长子串 给定一个字符串,找出不含有重复字符的最长子串的长度。 输入: “abcabcbb” 输出: 3 解释: 无重复字符的最长子串是 “abc”,其长度为 3。 输入: “bbbbb” 输出: 1 解释: 无重复字符的最长子串是 “b”,其长度为 1。 python解法 暴力穷举...

shura的技术空间 1987

【系统分析师】2026年上半年真题:论文及解题思路

四篇论文围绕系统与开发实践展开: 安全架构设计强调数据加密(国密算法)、零信任访问控制及容灾架构,以某医疗云平台为例,实现RTO<5分钟的高可用保障。 架构风格应用解析微服务/事件驱动等风格选型,结合电商平台案例,通过服务拆分与异步通信提升扩展性。 需求评审机制提出正式评审与走查结合的方法,在金融系统中减少30%返工,解决业务规则二义性问题。 LLM测试生成利用大模型从需求/代码生成用例,辅以人工校验,使测试效率提升50%,覆盖边缘场景。 各篇均遵循“背景-理论-实践”结构,突出

数据知道的博客 784

避坑指南!YOLO26模型导出/推理常见问题,99%的开发者都踩过

版本锁定:Ultralytics=8.4.2、OpenVINO=2024.0.0、Python=3.10,版本不一致是80%问题的根源;参数对齐:训练/导出/推理的imgsz、归一化、坐标映射必须完全一致,差一步就出错;算子统一:避免自定义算子,优先用YOLO26原生算子(C3k2/PSABlock),确保推理引擎兼容;分步验证:导出后先校验ONNX/IR模型→单图片推理→RTSP流推理→72小时稳定性测试,一步过易踩坑;工业级测试。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 510

NO.3——lengthOfLongestSubstring

其实就是一个队列,比如例题中的 abcabcbb,进入这个队列(窗口)为 abc 满足题目要求,当再进入 a,队列变成了 abca,这时候不满足要求。所以,我们要移动这个队列!我们只要把队列的左边的元素移出就行了,直到满足题目要求!一直维持这样的队列,找出队列出现最长的长度时候,求出解!这道题主要用到思路是:滑动窗口。时间复杂度:O(n)

qq_58653738的博客 143

jre9下载 jdk9

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

[LeetCode] 3. Longest Substring Without Repeating Characters 题解

问题描述 输入一个字符串,找到其中最长的不重复子串 例1: 输入:"abcabcbb" 输出:3 解释:最长非重复子串为"abc" 复制代码例2: 输入:"bbbbb" 输出:1 解释:最长非重复子串为"b" 复制代码例3: 输入:"pwwkew" 输出:3 解释:最长非重复子串为"wke" 复制代码问题难度 Medium 解题思路 本题采用「滑动窗口法」可以达到较理想的时间复杂度 O(n

weixin_33842304的博客 196

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

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

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

LeetCode 3. Longest Substring Without Repeating Characters题解

题目 3. Longest Substring Without Repeating Characters Given a string, find the length of the longest substring without repeating characters. 给定字符串,求出不含重复字符的最长连续子串。 Example 1: Input: "abcabcbb" Output:...

孑辞的博客 417

Leetcode题解 - 3. Longest Substring Without Repeating Characters

Leetcode算法题目3,要求对给定的一个字符串,找出其中最长的没有重复字符的子串。

xuelians的博客 393

3. Longest Substring Without Repeating Characters LeetCode题解

题目描述: Given a string, find the length of the longest substring without repeating characters. 题目大意: 给定一个字符串,找到无重复字符的最长子串。 Examples: Given "abcabcbb", the answer is "abc", which the len

水之如此的专栏 317

leetcode题解-3、Longest Substring Without Repeating Characters

题意:给定一个字符串,求最长不重复子串(非子序列)。 例子: Input: “abcabcbb” Output: 3 分析: “abc”, 它的长度为 3. Input: “bbbbb” Output: 1 分析: “b”, 它的长度为 1. Input: “pwwkew” Output: 3 分析: The answer is “wke”, with the lengt...

Irving_zhang的专栏 745

[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

LeetCode 3 longest-substring-without-repeating-characters题解

题目链接 Brute force 没有什么是暴力不能解决的问题。 循环就是了。 No codes Sliding window 滑窗真的生动形象 借助set或者map或者数组,我们有三种大同小异的滑窗策略: 思路都是基于一点:[i, j]如果有重复,假设j与k重复,那么,很显然[k, j+x]和[k-y, j+x](x、y是任意非负整数)的右端最长不重复子串是一致的。 借助set的模拟滑窗过程 ...

qq_42308861的博客 166

Leetcode题解-3. Longest Substring Without Repeating Characters

3. 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", w

hzw2945的博客 286

LeetCode题解——3Longest 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. Fo

susandebug 550

leetcode 题解 3. Longest Substring Without Repeating Characters

这一题的目标是找出字符串中最长的子串,要求字符串无重复。 先是一个错误的解法: 首先找出最长的无重复子串从该子串的下一个字母开始,继续执行判断过程。 但这一方法存在一定的漏洞,对于其中的测试用例:“dvdf”,如果采用以上思路,则首先得到子串“dv”;再从d开始判断,得到子串“df”,此时处理过程结束。但以上过程并不能得到最优结果“vdf”。因此为解决这种情况,解法又回到了暴力方法。

Andy.Wang的博客 645

LeetCode题解--3. Longest Substring Without Repeating Characters

题目地址:https://leetcode.com/problems/longest-substring-without-repeating-characters/ 代码 : https://github.com/gatieme/LeetCode/tree/master/3-LongestSubstringWithoutRepeatingCharacters 描述 Given

OSKernelLAB(gatieme) 2528

LeetCode题解-3-Longest Substring Without Repeating Characters

解题思路首先要读懂题目,它要求的是找到最长的子串,并且子串中没有出现重复的字符。我的想法,是用一个map存储每个字符最后出现的位置,还要有个变量start,它用来记录上一次出现重复的位置,如果当前字符上一次出现的位置比start小,那么说明中间出现了重复,不能当成有效的子串。记得就是在扫描结束后,再判断一下最后一段子串。给个图简单说明一下。 参考源码public class Solution {

小毛的胡思乱想 313

LeetCode Algorithms 3. Longest Substring Without Repeating Characters 题解

题目: Given a string, find the length of the longest substring without repeating characters.

MeDyG的博客 480
上一篇: leetcode题解-30. Substring with Concatenation of All Words
下一篇: CNN在句子相似性建模的应用--模型介绍篇
liuchongee
博客等级 码龄14年 1099粉丝 206原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值