解题思路:
利用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 人评分

  评论区

  • «
  • »