标签:
#include "iostream"
#include "cstdio"
#include "vector"
#include "string"
using namespace std;
int main()
{
int t;
scanf("%d",&t);
string a;
while(t--){
cin>>a;
int len=a.length();
int count01=1;
vector<char> v;
int i;
for( i=1;i<len;i++){
if(a.at(i)==a.at(i-1)){//此位置字母与前一个是否相同
count01++;
continue;//相同计数器加1
}else{//不相同判断计数器是否为1(因为计数器为一时不插入字符串)
if(count01!=1){//计数器可能非常大,接近10000,存入一字符数组,在倒序插入字符串
char str[10000];
int j=0;
while(count01!=0){
str[j]=count01%10+48;
j++;
count01/=10;
}
for(int k=j-1;k>=0;k--){
v.push_back(str[k]);
}
v.push_back(a.at(i-1));//插入前一字符
count01=1;
}
else{
v.push_back(a.at(i-1));//计数器为一,直接插入前一字符
}
}
}
if(count01!=1){//
char str[10000];
int j=0;
while(count01!=0){
str[j]=count01%10+48;
j++;
count01/=10;
}
for(int k=j-1;k>=0;k--){
v.push_back(str[k]);
}
}
v.push_back(a.at(i-1));//因为总是拿此位置与前一个位置的字符比较,而输出前一个字符,
//输入字符串没有后一个字符串与其相比而输出最后一个字符,所以对最后一个字符单独处理
vector<char>::iterator it;//迭代器遍历输出
for(it=v.begin();it!=v.end();it++){
printf("%c",*it);
}
printf("\n");
}
}
标签:
原文地址:http://www.cnblogs.com/kimsimple/p/5666836.html