这题要求计算字符串中“最长无重复字符的连续子串”的长度,本质是经典问题:最长不含重复字符的子串。
可用滑动窗口(双指针)+ 记录字符上一次出现位置来做,保证线性时间。
核心做法:
l,遍历右端 r 从左到右扫描字符串。在大规模文本语料收集和 OCR处理环节,常会在每条样本中残留重复的页眉、页脚、广告标记或爬虫抓取时的模板片段,这些重复内容对模型训练质量影响极大。我们考虑一个简化的场景:我们希望用 “最长无重复子字符串”(即样本中最长的一段不含任何重复字符的连续片段)来量化一条文本的 “纯净度”。直观地讲,最长无重复子串越短,说明这条样本中重复噪声越严重,越应优先清洗或剔除。
给定一条原始文本样本 s,其中可能包含大量重复的页眉 / 页脚或爬虫模板噪声。请你计算并返回其最长无重复字符子串的长度,作为该样本的 “纯净度指标”。
字符串s,由 ASCII字母、数字构成。不会有空格。长度n(1≤n≤107)
一个整数,表示s 中最长的不含重复字符的子串的长度
输入:
aA1aA1bB2
输出:
6
最长非重复内容为 aA1bB2
输入:
tttttttttt
输出:
1
重复同一个字符,最长子字符串为 b
尝试使用时间复杂度 O (n),空间复杂度 O (min (n, V))(其中 V 为字符集大小),否则可能无法拿到全部分数