借用了插入排序的思想,遍历整个字符串,用一个p来计字母连续出现的次数,一遇到相邻两个字符不同的情况,便输出个数和字母,直到整个字符串遍历完成。为了简化代码,在字符串最后添加了一个非字母字符,会使得最后一个字母总是和下一个字符不想等而进入else。
#include<iostream>
#include<cstring>
using namespace std;
int main(){
static char a[10001];
int p;
int t;
cin >> t;
cin.ignore(1, '\0'); //消除回车键对下一次输入的影响
while (t--){
p = 1; //p作为"游标"和计数器
cin.getline(a, 10000);
a[strlen(a)] = ' '; //添加一个非字母的字符
for (int n = 0; n < strlen(a)-1; n++){
if (a[n] == a[n + 1])
p++;
else{
if (p != 1){
cout << p << a[n];
p=1;
}
else {
cout << a[n];
p = 1;
}
}
}
cout<<endl;
}
}
http://acm.hdu.edu.cn/showproblem.php?pid=1020