会员专享
请先
登录 ,登录后可使用今日免费解锁;
开通会员 后可解锁完整内容。
解题思路
本题是字符分类提取 + 模拟拼接 ,可按以下步骤处理:
扫描分类 :从左到右遍历 S S S ,将数字按出现顺序放入数组 D D D ,字母放入数组 L L L 。
特判 :若 D D D 或 L L L 为空(只含数字或只含字母),直接返回原串 S S S 。
交替展开 :对 i = 0 , 1 , … , min ( ∣ D ∣ , ∣ L ∣ ) − 1 i=0,1,\ldots,\min(|D|,|L|)-1 i = 0 , 1 , … , min ( ∣ D ∣ , ∣ L ∣ ) − 1 :
先追加 D [ i ] D[i] D [ i ] ;
令 n n n 为 D [ i ] D[i] D [ i ] 的数值;若 n > 0 n>0 n > 0 ,将 L [ i ] L[i] L [ i ] 重复 n n n 次追加(n = 0 n=0 n = 0 时不输出字母)。
题目内容
输入一个字符串,字符串中只包含大写字母和数字。要求将字符串中的所有数字提取出来,按出现的顺序组成一个新的数字字符串;将所有字母提取出来,按出现的顺序组成一个新的字母字符串。最后将数字和字母按输入顺序交替输出,每个字母需要按其对应位置的数字 n n n 重复输出 n n n 次。如果两者长度不等,则将长出的部分直接拼接到末尾。
输入描述
输入只有一行,只包含大写字母和数字的字符串 S ( 1 < = S(1<= S ( 1 <= 长度< = 100 <=100 <= 100 )。
输出描述
输出只有一行,即按要求处理后的字符串。
补充说明
每个字母按其对应位置的数字n n n 重复输出n n n 次,如果数字为0 0 0 则该字母不输出
如果只包含字母或只包含数字,直接输出原字符串
样例1
输入
"A1B2C3"
输出
"1A2BB3CCC"
说明
数字: 1 1 1 ,2 2 2 ,3 3 3
字母: A , B , C A,B,C A , B , C
交替输出: 1 1 1 (A A A 重复 1 1 1 次) + + + 2 2 2 (B B B 重复 2 2 2 次) + + + 3 3 3 (C C C 重复 3 3 3 次) = = = 1 A 2 B B 3 C C C 1A2BB3CCC 1 A 2 BB 3 CCC
样例2
输入
"ABC0123"
输出
"01B2CC3"
说明
数字: 0 0 0 ,1 1 1 ,2 2 2 ,3 3 3
字母: A , B , C A,B,C A , B , C
交替输出: 0 0 0 (A A A 重复 0 0 0 次不输出) + + + 1 1 1 (B B B 重复 1 1 1 次) + + + 2 2 2 (C C C 重复 2 2 2 次) + + + 3 3 3 (多余) = = = 01 B 2 C C 3 01B2CC3 01 B 2 CC 3
样例3
输入
"B"
输出
"B"
说明
如果只包含字母或只包含数字,直接输出原字符串