K.小明和字符串
Time Limit: 1000 MS Memory Limit: 32768 K
Description
小明这个人特别无聊,他喜欢把一个字符串以一个奇怪的姿势压缩起来。他会把连续的字符表示成字符和数字的形式,而且他用的数字还都是一位的!!!比如下面这个例子:”a12” 表示的是 “aaaa”。也就是说压缩后的字符串里的每个数字表示重复最后一个出现的字符数字次,就好像上面的例子。
现在给你一些被无聊的小明压缩过的字符串,你能还原它么?
Input
输入的第一行包括一个整数 T,表示数据的组数。
每组输入包括一行,一个字符串,表示被小明压缩过的字符串。长度不超过50。
Output
每组输出包括一行,一个字符串,表示你展开之后的字符串。
Sample Input
1
a5b6c12
Sample Output
aaaaaabbbbbbbcccc
/*
1.字符串转为数组的操作:ch[i]-48 或 ch[i]-'0'
2.if(ch[i]>='0' && ch[i]<='9') 注意单引号
3.分开输出有重复字次的元素,再输出没有重复的元素
*/
#include<iostream>
#include<string.h>
#include<stdlib.h>
using namespace std;
int main()
{
int n,m;
char ch[51],temp;
cin>>n;
while(n--)
{
int i=0,k;
cin>>ch;
for(;ch[i]!='\0';i++) //ch[i]!='\0'字符串结束
if(ch[i]>='0' && ch[i]<='9') //(ch[i]>=48 && ch[i]<=57)
{
int c=ch[i]-48; //字符串转为数组,0的ASCII码48:`c=ch[i]-'0'`
for(k=0;k<c;k++) //字母重复字次c
cout<<temp; //放入新的数组temp
}
else //无重复字次
{
temp=ch[i];
cout<<temp;
}
}
cout<<endl;
}
//system("pause");
return 0;
}
“`