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

无重复字符的最长字串

时间:2024-07-21 17:28:07浏览次数:8  
标签:子串 字符 right int 字串 长度 最长 指针

一、题目描述

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

示例 1:

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

示例 2:

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

示例 3:

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

二、代码详解

int lengthOfLongestSubstring(string s) {
    int n = s.size();  
    unordered_set<char> myset;  // 创建一个用于存储字符的无序集合
    int left = 0;  // 左指针,用于标记子串的起始位置
    int right = 0;  // 右指针,用于遍历字符串
    int maxSubstr = 0;  // 用于记录最长无重复字符子串的长度
    int cntSubstr = 0;  // 用于记录当前子串的长度

    for (right = 0; right < n; right++)  // 右指针从字符串起始位置开始向右移动
    {
        while (myset.find(s[right])!= myset.end())  // 如果当前右指针指向的字符在集合中已存在(即出现重复)
        {
            myset.erase(s[left]);  // 从集合中删除左指针指向的字符
            left++;  // 左指针向右移动一位
            cntSubstr--;  // 当前子串长度减 1
        }
        myset.insert(s[right]);  // 将当前右指针指向的字符插入集合
        cntSubstr++;  // 当前子串长度加 1
        maxSubstr = max(maxSubstr, cntSubstr);  // 更新最长子串长度
    }
    return maxSubstr;  // 返回最长无重复字符子串的长度
}

标签:子串,字符,right,int,字串,长度,最长,指针
From: https://blog.csdn.net/m0_61990249/article/details/140590710

相关文章

  • 字符串的创建辨析
    字符串的创建辨析Strings="1"*使用引号创建字符串会在常量池中寻找有则直接返回没有则创建Strings=newString("1");*使用new创建如果常量池没有"1"则在常量池中创建"1"再在堆中创建String并返回地址给引用*使用s.intern()如果常量池中没有与字符串相同的字符串(判......
  • Leetcoede编程基础0到1——459.重复的子字符串 & 283.移动零 &1822.数组元素积的符号
    459.重复的子字符串给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。示例1:输入:s="abab"输出:true解释:可由子串"ab"重复两次构成。示例2:输入:s="aba"输出:false示例3:输入:s="abcabcabcabc"输出:true解释:可由子......
  • 【Python将字符串连接在一起】
    当然,Python是一个功能丰富且灵活的语言,有许多技巧和最佳实践可以帮助你更有效地编写代码。以下是一些常见的Python技巧:列表推导式(ListComprehensions):这是一种简洁的构建列表的方法。它比使用循环更加清晰和Pythonic。[x*2forxinrange(5)]#输出:[0,2,4,6,......
  • 查找字符串中第 n 次出现的子字符串
    这看起来应该是相当微不足道的,但我是Python新手,想要以最Pythonic的方式来做。我想找到与字符串中第n次出现的子字符串相对应的索引。|||必须有一些与我想做的事情相当的东西,即如何在Python中实现这一点?mystring.find("substring",2nd)Howcanyoua......
  • Databricks Pyspark 解析连接字符串
    有没有一种简单的方法来解析这种格式的连接字符串?HOST=HostName;Port=1234;ServiceName=Database;USerID=User1;Password=Password123;我需要解析主机和端口、数据库、用户和密码,并将它们分配给单独的变量。importredef解析连接字符串(conn_str):"""解析连接字......
  • 在休息端点中验证查询字符串参数的默认方法是什么?
    我正在使用Python和Flask设计一个RESTAPI。我很好奇,如果有人输入无效的查询字符串参数,会发生什么?GEThttps://www.example.com/users?page=1;count=20;dummyinvalidparameter=dummyvalue例如,如果用户输入一个名为dummyinvalidparameter的查询参数怎么办......
  • 从 python 中的字符串列表中提取 def 定义函数的标签
    我想使用Python中的正常def过程创建函数,并将标签分配给从字符串列表中提取的命名空间。如何实现这一点?这个问题的动机:我正在创建一个与sympy兼容的python函数库,供数学家用于符号计算实验。许多函数需要初始化具有相关标签的多个对象的系统,这些标签分别由用户提供的字......
  • 实验8.混合编程实现打印字符函数
    简介实验:混合编程实现打印字符函数仓库地址:https://gitee.com/caicunjun/tityos代码引导省略内核main.c//文件:main.c//时间:2024-07-19//来自:ccj//描述:内核从此处开始#include"print.h"intmain(void){uint8_ti='A';while(i<......
  • 字符的统计 387、389、383、242、49
    387.字符串中的第一个唯一字符解法一、哈希映射计算每个字符出现的次数,然后再遍历,与数组里记录次数进行比对顺便一提哈希表数据结构耗时很大,数组计数哈希思想快很多(是不是桶排来着classSolution{publicstaticintfirstUniqChar(Strings){intlen=......
  • 语法错误:源代码字符串不能包含空字节
    我正在尝试运行pythonmanage.pymakemigrations并引发以下异常。请注意-1-我在models.py中有自己的User类2-两个模型类,一个在应用程序内部,另一个文件在应用程序外部。外部models.py是根据我的数据库架构生成的类。我使用以下命令自动生成文件。pythonmana......