算法学习-真题-003-第十一届蓝桥杯省赛 C/C++ 大学B组第一场-G

试题 G: 解码 时间限制: 1.0s 内存限制: 256.0MB 总分:20 分

【问题描述】

小明有一串很长的英文字母,可能包含大写和小写。

在这串字母中,有很多连续的是重复的。小明想了一个办法将这串字母表

达得更短:将连续的几个相同字母写成字母 + 出现次数的形式。

例如,连续的 5 个 a,即 aaaaa,小明可以简写成 a5(也可能简写成 a4a、

aa3a 等)。对于这个例子:HHHellllloo,小明可以简写成 H3el5o2。为了方便表

达,小明不会将连续的超过 9 个相同的字符写成简写的形式。

现在给出简写后的字符串,请帮助小明还原成原来的串。

【输入格式】

输入一行包含一个字符串。

【输出格式】

输出一个字符串,表示还原后的串。

【样例输入】

H3el5o2

【样例输出】

HHHellllloo

【评测用例规模与约定】

对于所有评测用例,字符串由大小写英文字母和数字组成,长度不超过

100。

请注意原来的串长度可能超过 100。

#include <iostream>
using namespace std;
int main() {
    string s,t;//s为输入,t为中间赋值用,好像是bug  如果不对他赋值而直接append会报错
    string r="";//输出字符
    cin>>s;
    int num=0;//提取出字符对应的数
    for(int i = 0;i < s.length()-1;i++){
        if(s[i+1] <= '9' && s[i+1] >= '0')
        {
          num=(int(s[i+1]-'0'));
          for(int j=0;j<num;j++)
          {
          	t=s[i];
          	r.append(t);
          }
           i++;
        }else
        {
         t=s[i];
         r.append(t);	
        }
    }
    cout<<r;
}
©️2020 CSDN 皮肤主题: 数字50 设计师:CSDN官方博客 返回首页