AlgoMooc
你已开通华为OD训练营权益,还差最后一步——完成入营激活(兑换课程 + 加飞书 + 登记服务群),即可解锁全部课程与专属服务。去激活 →
← 返回题库

K0010. 魔法符文中的最大三数提取

简单通过率 51% · 提交 271 · 通过 139
字符串模拟排序

在「小慕」的一个项目中,他需要从一个神秘的 符文数据串 中解析出隐藏的数字信息。这个字符串里混杂着各种符号和字母,小慕的任务是从中提取出最大的 三个整数,并按 。如果提取出的整数数量不足三个,则按实际数量输出。 --- 提取规则: 1. 负号规则:符号 `-` 如果紧跟在数字之前,则视为负号,表示负整数。例如,`a-132b` 中可提取整数 `-132`。 2. 完整提取规则:必须提取完整的整数,不能截取部分。例如,`a-132b` 中只能提取 `-132`,不能提取 `-1`、`-13`、`-12` 或 `32`。 3. 规则:提取后的整数需移除前导零。例如,`007` 应输出为 `7`。 4. 范围规则:数字范围为 `[-2^{31}, 2^{31}-1]`,超出此范围的数字不合法,不参与统计。

提示:带虚线的词点一下有通俗解释。

输入描述

输入一个字符串 `runeString`,长度满足 $1 \leq |runeString| \leq 100$,其中: - `runeString` 包含可见字符(包括字母、数字、符号等)。 - `runeString` 保证至少包含一个数字。 1. 保证输入字符串中至少有一个合法整数。 2. 输出的整数之间用空格分隔,按降序排列。 3. 合法整数需移除前导零并在 $[-2^{31}, 2^{31}-1]$ 范围内。

输出描述

输出一个最多包含三个整数的列表,按照从大到小的顺序排列。

示例

示例 1

输入

v76b-68-48()_66!q

输出

76 66 -48

说明:提取到的整数为:`76, -68, -48, 66`,按照降序排列为 `[76, 66, -48]`。

示例 2

输入

-007abc-12-50d1000

输出

1000 -7 -12

说明:提取到的整数为:`-7, -12, -50, 1000`,移除前导零并按降序排列为 `[1000, -12, -50]`。

示例 3

输入

abc100xyz50

输出

100 50

说明:提取到的整数为:`100, 50`,按照降序排列为 `[100, 50]`。

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解
提取最大三个整数并降序排列 输入: v76b-68-48()_66!q 提取整数: 76, -68, -48, 66 降序输出: 76 66 -48 只取最大的三个,不足三个则取全部 注意负号、前导零和范围限制
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「魔法符文中的最大三数提取」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。