解题思路
本题是字符分类提取 + 模拟拼接,可按以下步骤处理:
- 扫描分类:从左到右遍历 S,将数字按出现顺序放入数组 D,字母放入数组 L。
- 特判:若 D 或 L 为空(只含数字或只含字母),直接返回原串 S。
- 交替展开:对 i=0,1,…,min(∣D∣,∣L∣)−1:
- 先追加 D[i];
- 令 n 为 D[i] 的数值;若 n>0,将 L[i] 重复 n 次追加(n=0 时不输出字母)。
P14397.字符串格式调整(100分)
题目内容
输入一个字符串,字符串中只包含大写字母和数字。要求将字符串中的所有数字提取出来,按出现的顺序组成一个新的数字字符串;将所有字母提取出来,按出现的顺序组成一个新的字母字符串。最后将数字和字母按输入顺序交替输出,每个字母需要按其对应位置的数字 n 重复输出 n 次。如果两者长度不等,则将长出的部分直接拼接到末尾。
输入描述
输入只有一行,只包含大写字母和数字的字符串 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"
说明
如果只包含字母或只包含数字,直接输出原字符串