解题思路:
利用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语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复