**字符串格式调整**
2026 华为OD机试真题 6月14日华为OD上机新系统考试真题 100 分题型
点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解
题目描述
输入一个字符串,字符串中只包含大写字母和数字。要求将字符串中的所有数字提取出来,按出现的顺序组成一个新的数字字符串;将所有字母提取出来,按出现的顺序组成一个新的字母字符串。最后将数字和字母按输入顺序交替输出,每个字母需要按其对应位置的数字 n 重复输出 n 次。如果两者长度不等,则将长出的部分直接拼接到末尾。
2026 华为OD机试真题 6月14日华为OD上机新系统考试真题 100 分题型
输入描述
输入只有一行,只包含大写字母和数字的字符串 S(1<=长度<=100)。
输出描述
输出只有一行,即按要求处理后的字符串。
补充说明
- 每个字母按其对应位置的数字n重复输出n次,如果数字为0则该字母不输出
- 如果只包含字母或只包含数字,直接输出原字符串
示例1
输入
A1B2C3
输出
1A2BB3CCC
说明
- 数字: 1,2,3
- 字母: A,B,C
- 交替输出: 1(A 重复 1 次) + 2(B 重复 2 次) + 3(C 重复 3 次) = 1A2BB3CCC
示例2
输入
ABC0123
输出
01B2CC3
说明
- 数字: 0,1,2,3
- 字母: A,B,C
- 交替输出: 0(A 重复 0 次不输出) + 1(B 重复 1 次) + 2(C 重复 2 次) + 3(多余) = 01B2CC3
示例3
输入
B
输出
B
说明
如果只包含字母或只包含数字,直接输出原字符串
解题思路
本题是一个 字符串提取与重组 问题,主要任务是按规则重新排列数字和字母。
算法步骤:
- 从原字符串中分别提取所有数字和所有字母
- 检查边界情况:如果只包含字母或只包含数字,直接返回原字符串
- 取数字和字母长度的较小值作为配对次数
- 对于每对 (数字d, 字母c):
- 先输出数字 d
- 根据数字 d 的值决定字母 c 的输出次数
- 如果 d 为 0,则不输出字母 c
- 如果 d 大于 0,则输出 d 个字母 c
- 将长出部分的剩余数字或字母直接拼接到末尾
关键点:
- 数字和字母是一一配对的,按提取后的顺序对应
- 数字 0 不输出对应字母,但仍输出数字 0 本身
- 剩余部分按原顺序直接追加
复杂度分析
- 时间复杂度:O(N),只需遍历字符串一次
- 空间复杂度:O(N),用于存储提取的
版权声明:
作者:魔改工程师
链接:https://www.sylblog.xin/archives/663
文章版权归作者所有,未经允许请勿转载。
THE END