#6685. 最长不含重复字符的子串

最长不含重复字符的子串

最长不含重复字符的子串

题目描述

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

注意:

  • 子串必须是连续的字符序列
  • 子串中的每个字符最多出现一次;
  • 如果字符串为空,则最长长度为 0

输入格式

输入一行,一个字符串 s


输出格式

输出一个整数,表示最长不含重复字符的连续子串长度。


样例输入1

abcabcbb

样例输出1

3

样例解释

字符串:

abcabcbb

其中最长的不含重复字符的子串有:

abc

长度:

3

其他长度相同的答案:

bca
cab

均满足要求。


样例输入2

bbbbb

样例输出2

1

样例解释

所有字符都是:

b

只能选择一个字符:

b

因此答案为:

1

样例输入3

pwwkew

样例输出3

3

样例解释

最长合法子串:

wke

长度:

3

数据范围

对于所有测试数据:

0 ≤ |s| ≤ 100000

其中:

s 只包含小写英文字母

提示

本题可以使用:

  • 双指针
  • 滑动窗口
  • 计数数组

维护一个窗口:

[left ... right]

保证:

窗口内没有重复字符

当出现重复字符时:

移动左指针,直到窗口重新满足条件。


评分标准

测试点 数据规模 要求
20% n≤100 暴力枚举
40% n≤5000 优化判断
100% n≤100000 O(n)滑动窗口

输入输出说明

输入

abcabcbb

表示:

字符串长度为:

8

字符串内容:

a b c a b c b b

输出

3

表示:

最长合法连续子串长度为:

3

知识标签

双指针
滑动窗口
计数数组
字符串
哈希思想

难度定位

CSP-J 入门/提高