解题思路:
利用string直接在字符串后面加字符的特性解决
注意事项:
就是要想办法将统计的数字变为字符串类型,我这里用的stringstream流来解决,比较简单
参考代码:
#include
using namespace std;
string cstr="";//输出的字符串
void func(string str)
{
int count=1;//统计重复的字符个数
stringstream ss;//定义一个字符串与数字转换的流,不然不好将数字放入字符串,但是这个流效率比较低,能AC就没考虑那么多了
string s;//用于获得ss流里的数据,得到string类型
for(int i=0;i<str.length();i++)
{
if(i+1<str.length() &&str[i+1]==str[i])
{
count++;//前后字符相同就加1
continue;//然后继续从for开始下次循环
}
else
{
if(count>1)//count大于1就说明有重复字符,就利用stringstream流将int型的count转换为string型的s
{
ss<<count;
ss>>s;
cstr+=s;//C++的string支持直接在末尾加字符串,每次循环到这就直接加在cstr后面
ss.clear();//清空这个流,方便下次读入新的流数据
}
cstr+=str[i]; //上面的if是加数字,这个是再加字符本身
count=1;//重置1,重新寻找重复字符,方便统计
}
}
cout<<cstr<<endl;
cstr="";//重置空,方便多组数据继续处理
return ;
}
int main()
{
int n;
string str;
cin>>n;
while(n--)
{
cin>>str;
func(str);//每次执行这个函数即可
}
return 0;
}
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题5.8 (C语言代码)浏览:683 |
三角形 (C语言代码)浏览:965 |
母牛的故事 (C语言代码)浏览:1451 |
C语言程序设计教程(第三版)课后习题11.1 (C语言代码)浏览:651 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:569 |
C二级辅导-分段函数 (C语言代码)浏览:659 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:748 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:607 |
【计算两点间的距离】 (C语言代码)浏览:875 |
1415题求解浏览:681 |