首页 > 其他分享 >无重复字符的最长子串

无重复字符的最长子串

时间:2025-01-20 20:12:49浏览次数:1  
标签:子串 字符 map int unordered ans 最长

> “偶遇变态力扣周赛,拼尽全力无法战胜,力竭而亡,无奈去刷基础题,遂写下此题解”

戳我看原题

题目大意

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

思路

滑动窗口(不知道为啥最近和滑动窗口这么有缘),遍历右边界,每次移动更新左边界,确保窗口内不会出现重复元素。

如何更新左边界

开一个数组用于记录当前右边界字符出现的下标i,若下次遇到相同的字符则通过该数组直接将左节点更新至i+1;

如何记录字符所在的下标

方法一:利用ASCII表,开一个长度为128的数组;
方法二:利用unordered_map关联容器
【C++】unordered_map 容器的最全解析(什么是unordered_map?unordered_map的常用接口有那些?)

代码

点击查看代码
class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        vector<int>m(128,0); // unordered_map<char,int> m;
        int ans = 0;
        int i = 0,n=s.size();
        for (int j = 0; j < n; j++) {
            i = max(i, m[s[j]]);
            m[s[j]] = j + 1;
            ans = max(ans, j - i + 1);
        }
        return ans;
    }
};

感想

这不比摘樱桃的题解好写多了。kyiku的歌怎么这么好听

标签:子串,字符,map,int,unordered,ans,最长
From: https://www.cnblogs.com/Xhita/p/18679803

相关文章

  • 【leetcode 22】541. 反转字符串II
    思路:其实在遍历字符串的过程中,只要让i+=(2*k),i每次移动2*k就可以了,然后判断是否需要有反转的区间。因为要找的也就是每2*k区间的起点,这样写,程序会高效很多。classSolution{publicStringreverseStr(Strings,intk){char[]ch=s.toCh......
  • 写一个方法,传入数字x,从一个一维数组里找到两个数字符合“n1 + n2 = x”
    在前端开发中,你可以使用JavaScript来编写这个方法。下面是一个简单的实现,它接受一个数字x和一个一维数组arr作为参数,并尝试在数组中找到两个数字,使它们的和等于x。如果找到了这样的两个数字,它会返回一个包含这两个数字的数组;如果没有找到,它会返回null。functionfindTwoNumbersTh......
  • 挖到宝了[特殊字符]几乎把大模型讲得透透的,大模型入门必读
    《基于ChatGPT、GPT-4等Transformer架构的自然语言处理》是一本全面介绍Transformer模型及其在自然语言理解(NLU)中应用的书籍。NLU作为自然语言处理(NLP)的一个重要分支,在数字经济中扮演着核心角色。本书详细阐述了Transformer模型的四个关键阶段:预训练、有监督微调、奖励建模......
  • 内存字符串有关问题
    问题一:#include<iostream>#include<cstdint>#include<cstring>usingnamespacestd;typedefstructdata{charhwid[4];charsip[4];charrev[4];}Data;intmain(){Datastdata;memset(&stdata,0,sizeof(stdata));......
  • 【动态规划】最长上升子序列(Longest Increasing Subsequence)问题以及输出具体方案
    最长上升子序列两道模板题(一样的)洛谷B3637最长上升子序列AcWing895.最长上升子序列题目描述这是一个简单的动规板子题。给出一个由\(n(n\le5000)\)个不超过\(10^6\)的正整数组成的序列。请输出这个序列的最长上升子序列的长度。最长上升子序列是指,从原序列中按顺......
  • 字符串
    字符串定义字符串:由若干个字符构成的字符序列,每一个字符位置是固定的在java中,提供了一个类来表示字符串:StringJava程序中的所有字符串文字(例如"abc")都被实现为此类的实例【对象】。因为String对象是不可变的,它们可以被共享。思考思考:1、同一个内容的字符串,为什么地......
  • oracle使用case when报错ORA-12704字符集不匹配原因分析及解决方法
    问题概述使用oracle的casewhen函数时,报错提示ORA-12704字符集不匹配,如下图,接下来分析报错原因并提出解决方法。样例演示现在有一个TESTTABLE表,本表包含的字段如下图所示,COL01字段是NVARCHAR2类型,COL02字段是VARCHAR2类型。场景一使用case简单函数,case后面的内容和when......
  • 解决数据库导入失败及字符编码不一致的问题
    当您在导入SQL文件时遇到500错误,并且需要确认数据库编码是否为UTF-8时,可以按照以下步骤进行排查和解决:备份现有数据:在执行任何数据库操作之前,请确保已经对现有数据进行了完整备份。可以通过导出当前数据库结构和数据的方式创建备份文件,以防止意外丢失重要信息。检查SQL......
  • 学霸带你游戏化理解字符串操作与匹配算法
    游戏开发字符串操作应用在现代游戏开发中,字符串处理是一个不可或缺的环节。游戏中的文本内容、玩家输入、动态生成的关卡信息等,都依赖于高效和精确的字符串操作。无论是在处理任务文本、玩家名字,还是实时聊天信息、语言本地化,字符串的高效管理和优化都直接影响着游戏的性能和......
  • 【华为OD-E卷 - 最长连续子序列 100分(python、java、c++、js、c)】
    【华为OD-E卷-最长连续子序列100分(python、java、c++、js、c)】题目有N个正整数组成的一个序列。给定整数sum,求长度最长的连续子序列,使他们的和等于sum,返回此子序列的长度,如果没有满足要求的序列,返回-1输入描述第一行输入是:N个正整数组成的一个序列第二行输入是:给定......