小红正在为大模型预训练准备一批文本语料。为了降低低质量文本和重复文本对模型的影响,她设计了一套清洗流程,并要求所有文档必须按顺序通过这些规则。 对每篇文档,先将连续空白字符合并成一个空格,并去掉首尾空格。规范化后的长度必须在 [L,R] 内,否则丢弃。若文档最终保留,输出的也是规范化后的文本。 随后,小红按非字母数字字符切分文本,提取所有单词,并统一转成小写。若单词序列中精确命中任意黑名单词,则丢弃该文档。注意黑名单只匹配完整单词,不匹配子串。 接着检查复读风险。任意连续三个单词构成一个 3-gram,如果某个 3-gram 在同一篇文档中出现次数严格大于 M,则认为该文档有复读风险并丢弃。 最后进行语义去重。如果当前文档提取出的单词序列与之前已经保留的某篇文档完全相同,则只保留第一次出现的文档。 请按输入顺序输出所有通过清洗的文档。
第 1 行包含 5 个整数: N, L, R, M, K ,分别代表文档数、最小长度、最大长度、 3-gram 最大允许出现次数、黑名单词汇数。 第 2 行包含 K 个由空格分隔的黑名单词汇(保证全为小写),如果 K=0 ,则跳过此行,直接进入到文档内容。 接下来的 N 行,每行包含一篇原始文档(可能包含各种标点、标点和多余空格)。
按顺序输出所有通过清洗的高质量文档,每篇文档占一行。
3 10 100 2 1 spam Buy cheap SPAM!!! He is a spammer He is, A! Spammer.
He is a spammer
考点:字符串
限制 2 秒 / 256MB | 标准输入输出
推荐方向:字符串
本题切入点
多层文本清洗:先规范化空白并做长度门,再按非字母数字切词并小写化做黑名单精确命中判定,接着统计每个 3-gram 出现次数判复读,最后用集合对词序列做首现保留去重。
按字符逐个处理,或利用字符串的前后缀性质加速匹配。
思路框架(字符串 通法 · 非本题专属)
实现要点:Python 切片 s[l:r+1] 取子串;注意字符串不可变,频繁拼接改用 list。
复杂度:时间 O(n) ~ O(n²) | 空间 O(n)
该范式的通法易错点
样例 1
3 10 100 2 1 / spam / Buy cheap SPAM!!! / He is a spammer / He is, A! Spammer.He is a spammer解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2026年-华为-04月29号AI岗。