**字符串格式调整**

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

说明

如果只包含字母或只包含数字,直接输出原字符串

解题思路

本题是一个 字符串提取与重组 问题,主要任务是按规则重新排列数字和字母。

算法步骤:

  1. 从原字符串中分别提取所有数字和所有字母
  2. 检查边界情况:如果只包含字母或只包含数字,直接返回原字符串
  3. 取数字和字母长度的较小值作为配对次数
  4. 对于每对 (数字d, 字母c):
    • 先输出数字 d
    • 根据数字 d 的值决定字母 c 的输出次数
    • 如果 d 为 0,则不输出字母 c
    • 如果 d 大于 0,则输出 d 个字母 c
  5. 将长出部分的剩余数字或字母直接拼接到末尾

关键点:

  • 数字和字母是一一配对的,按提取后的顺序对应
  • 数字 0 不输出对应字母,但仍输出数字 0 本身
  • 剩余部分按原顺序直接追加

复杂度分析

  • 时间复杂度:O(N),只需遍历字符串一次
  • 空间复杂度:O(N),用于存储提取的
THE END