华为OD机试真题 新系统 - 文档特征提取 (JavaPyCC++JsGo)

0 阅读3分钟

文档特征提取

2026 华为OD机试真题 4月22日华为OD上机新系统考试真题 100 分题型

点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解

题目描述

一篇文档由多个文本片段组成(这里假定每个片段由小写英文字母组成,不包含其他内容),需要针对该文档的多个片段进行特征提取,提取方法如下:

1、特征提取处理时首先找出所有片段中都包含的字母,也就是该字母在所有片段中都至少出现过一次。

2、如果某个字母在多个片段中都出现过,则计算字母在所有片段中出现的最小次数,如果最小次数为11,则特征中包含11个该字母,如果最少次数为22,则特征中包含22个该字母,以此类推。

3、最终输出的文本特征是具备上诉条件所有字母的集合,且字母按照从小到大排序。

4、如果所有的字母都不符合该条件,则提取特征的结果为空。

补充说明

用例中字符串(即片段)的总数小于10001000

示例1

输入

paper parent parade

输出

aepr

说明

“p”, “a”, “e”, “r” 在每个字符串中都至少出现一次.

每个字母在各字符串中都至少出现1次,所以结果中每个字母出现一次

示例2

输入

hello hollow halloween

输出

hllo

说明

“h” 在每个字符串中都至少出现11次 → 取最小值11次

“l” 在三个字符串中分别出现22次、22次、22次 → 最小值22次

“o” 在三个字符串中分别出现11次、22次、11次 → 最小值11次

所以结果为hllo

示例3

输入

abc def ghi

输出

""

说明

没有字母在所有三个字符串中都出现

解题思路

核心思想

  1. 统计字符频率:对每个输入的文本片段,统计其中每个小写字母出现的次数。
  2. 寻找共有字母:遍历所有片段,找出在所有片段中都出现过的字母。
  3. 取最小值:对于每一个共有字母,计算它在所有片段中出现次数的最小值 kk
  4. 构建结果:将每个共有字母重复 kk 次,并按字母表顺序(从小到大)拼接成最终的特征字符串。
  5. 边界处理:如果没有共有字母,则输出空字符串 ""

复杂度分析

  • 时间复杂度O(NL+26N)O(N \cdot L + 26 \cdot N),其中 NN 是片段数量,LL 是片段的最大长度。统计每个片段的字符频率需要 O(NL)O(N \cdot L),遍历 26 个字母并查找最小值需要 O(26N)O(26 \cdot N)
  • 空间复杂度O(N26)O(N \cdot 26),用于存储每个片段的字符频率统计。