使用滑动窗口+ 哈希表(或数组)记录每个字符最近一次出现的位置。用两个指针维护当前“无重复”的窗口 [left, right]:当右指针遇到已出现过且位置在当前窗口内的字符时,将 left 移到该字符上次出现位置的下一位,从而保证窗口内始终无重复;每次更新答案为窗口长度的最大值。
核心要点:
last[ch] >= left,则 left = last[ch] + 1last[ch] = right,并用 ans = max(ans, right - left + 1)给定一个字符串 s,请你计算其中不含重复字符的最长连续子串的长度。
注意:此处的“子串”必须是连续的字符序列,不是子序列。
一行字符串 s。 0≤∣s∣≤5×104,s 由英文字母、数字、符号和空格组成。
输出一个整数,表示 s 中不含重复字符的最长连续子串的长度。
输入
abcabcbb
输出
3
说明
最长无重复子串为 "abc",长度为 3。
输入
bbbbb
输出
1
说明
最长无重复子串为 "b",长度为 1。
输入
pwwkew
输出
3
说明
最长无重复子串可以是 "wke"(或 "kew"),长度为 3;"pwke" 不是子串。
输入
(空串) 输出
0