在网络安全日志分析系统中,每台服务器每秒会产生一条由字母和数字组成的事件编码。安全分析师发现,当连续一段时间内的事件编码序列中没有出现重复的编码字符时,这段时间内的日志可以被认为是"独立事件窗口",有助于精确定位异常行为。窗口越长,说明系统在该时段内产生的事件种类越丰富,分析价值越高。 现在给你一条完整的事件编码序列 s,请你找到其中最长的一段连续子序列,使得这段子序列中每个字符都不相同,并输出该子序列的长度。
一行,一个字符串 s,仅由 ASCII 字母和数字组成,不含空格。字符串长度为 n (1 <= n <= 10^7)。
一个整数,表示 s 中最长的不含重复字符的连续子串的长度。
xY3abxY3c
6
aaaaaaa
1
考点:滑动窗口
数据规模 n ≤ 10000000 | 限制 1 秒 / 256MB | 标准输入输出
推荐方向:滑动窗口
本题切入点
最长无重复字符子串:滑动窗口 + 记录每个字符最近出现位置,右指针扩张、左指针仅在冲突时跳到 last[c]+1,O(n) 可扛 1e7 长度。
维护一个连续区间,进一个元素出一个元素,区间内统计量增量更新。
思路框架(滑动窗口 通法 · 非本题专属)
实现要点:注意窗口长度是定长还是不定长:定长则区间长度固定为 k,不定长则靠条件收缩。
复杂度:时间 O(n) | 空间 O(字符集/去重元素数)
该范式的通法易错点
对照本题
样例 1:输入 xY3abxY3c → 输出 6
最长的无重复字符子串为 "abxY3c"(从第4个字符到第9个字符),长度为6。其中每个字符 a, b, x, Y, 3, c 都只出现了一次。
样例 2:输入 aaaaaaa → 输出 1
所有字符都相同,任意长度大于1的子串都包含重复字符,因此最长无重复子串长度为1。
解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2026年-华为-1月21号AI岗。