首页 > 其他分享 >LCR 016. 无重复字符的最长子串(中等)(主站3)

LCR 016. 无重复字符的最长子串(中等)(主站3)

时间:2024-11-15 09:17:00浏览次数:3  
标签:right LCR 主站 while window 016 ans 复杂度 left

https://leetcode.cn/problems/wtcaE1/
https://leetcode.cn/problems/longest-substring-without-repeating-characters/
难度:☆☆☆

题目:

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

示例:

输入: s = “abcabcbb”
输出: 3

输入: s = “bbbbb”
输出: 1

方法:字符串,滑动窗口【不定宽】

Python
时间复杂度O(n)。
空间复杂度O(n)。

class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        # 本题最大特点就是滑动窗口宽度会变,即left和right不是同时右移。
        left, right = 0, 0  # 定义窗口左端索引、右端索引
        lens = len(s)
        window = set()  # 定义窗口,本题窗口不是list,而是一个set
        ans = 0

        while right < lens:
            # 开始滑动窗口
            # right先行,将字符一个个放入集合中,并记录长度
            # 如果发现当前字符在集合中存在,开始移动left,直到该字符被剔除集合
            c = s[right]
            while c in window:
                window.remove(s[left])
                left += 1
            window.add(c)
            ans = max(ans, right - left + 1)
            right += 1
        
        return ans

Java
时间复杂度O(n)。
空间复杂度O(n)。

class Solution {
    public int lengthOfLongestSubstring(String s) {
        int left = 0, right = 0, ans = 0;
        int lens = s.length();
        Set<Character> window = new HashSet<>();
        
        while (right < lens) {
            char c = s.charAt(right);
            while (window.contains(c)) {
                window.remove(s.charAt(left));
                left++;
            }
            window.add(c);
            ans = Math.max(ans, right - left + 1);
            right++;
        }
        return ans;
    }
}

标签:right,LCR,主站,while,window,016,ans,复杂度,left
From: https://blog.csdn.net/weixin_43606146/article/details/143786185

相关文章

  • 【题解】洛谷P1712: [NOI2016] 区间
    P1712[NOI2016]区间我对尺取法并不敏感,所以感觉有点难度,我们想到按照区间长度排序加入使得满足单调性,直到有一个区间的覆盖次数达到了m就可以计算了,而这个就是尺取法,单调性使得我们答案总是最优的。覆盖次数就可以用线段树做,而且数据范围很大需要离散化,计算答案时注意把答案带......
  • P2779 [AHOI2016初中组] 黑白序列题解
    题意:小可可准备了一个未完成的黑白序列,用B和W表示黑色和白色,用?表示尚未确定。他希望知道一共有多少种不同的方法,在决定了每一个?位置的颜色后可以得到一个小雪喜欢的黑白序列。其中,小雪喜欢的黑白序列指的是对于任何正整数\(n\),由连续\(n\)个黑接上连续\(n\)个白......
  • 国标GB28181-2016平台LiteGBS国标GB28181软件打造跨区域监控与数据共享新生态
    近年来,随着网络视频监控技术的快速发展,政府部门和跨区域行业单位对视频监控的需求不再局限于本地联网监控系统。越来越多的机构开始探索在现有本地联网基础上,建立覆盖省级乃至全国范围的跨区域监控网络,目的是为实现更广泛的数据共享与协同管理。LiteGBS视频融合云平台应运而生,它......
  • LCR 012. 寻找数组的中心下标(简单)(主站724)
    https://leetcode.cn/problems/tvdfij/https://leetcode.cn/problems/find-pivot-index/难度:☆☆☆题目:给你一个整数数组nums,请计算数组的中心下标。数组中心下标是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。如果中心下标位于数组最左端,那么左......
  • LCR 011. 连续数组(中等)(主站525)
    https://leetcode.cn/problems/A1NYOS/https://leetcode.cn/problems/contiguous-array/难度:☆☆☆☆题目:给定一个二进制数组nums,找到含有相同数量的0和1的最长连续子数组,并返回该子数组的长度。示例:输入:nums=[0,1]输出:2说明:[0,1]是具有相同数......
  • 题解:[SCOI2016] 美味
    前置知识:可持久化线段树(主席树)洛谷3293[SCOI2016]美味问题有一个长度为\(n\)的序列\(a_1,a_2,...,a_n\)。每次询问给你\(b\)、\(x\),你需要求出\(\max\{a_i+x\bigoplusb\}\)。\(1\lel\ler\len\le2\times10^5,0\lea_i,b,x<10^5\)首先,有\(l,r\)应该......
  • warmup_csaw_2016
    题目链接:warmup_csaw_2016。下载附件后,使用IDA反编译,定位到main函数,如下。__int64__fastcallmain(inta1,char**a2,char**a3){chars[64];//[rsp+0h][rbp-80h]BYREFcharv5[64];//[rsp+40h][rbp-40h]BYREFwrite(1,"-WarmUp-\n",0xAuLL);writ......
  • 数据结构[2016]
    一、设有二维数组A[6][8],每个元素占6个字节存储,实现存放,A[0][0]的起始地址为1000,计算:(10分)(1)数组最后一个元素A[5][7]的起始地址;(2)按行优先存放时,元素A[1][4]的起始地址;(3)按列优先存放时,元素A[4][7]的起始地址。二、若有一棵二叉树,左右子树均有三个结点,其左子树的前......
  • 【漏洞复现】通达OA 2013、2016、2017 header.inc.php 任意用户登陆漏洞
    免责声明:        本文旨在提供有关特定漏洞的信息,以帮助用户了解潜在风险。发布此信息旨在促进网络安全意识和技术进步,并非出于恶意。读者应理解,利用本文提到的漏洞或进行相关测试可能违反法律或服务协议。未经授权访问系统、网络或应用程序可能导致法律责任或严......
  • 【软考】系统架构设计师-2016年下半年上午综合知识真题及答案
    全国计算机技术与软件专业技术资格(水平)考试高级系统架构设计师2016年下半年上午试卷 综合知识试题一 在嵌入式系统的存储部件中,存取速度最快的是( )。A.内存  B.寄存器组  C.Flash  D. Cache试题二 实时操作系统(RTOS)内核与应用程序之间的接口称......