在相邻的不相同的字符后面插入字符的个数

/*在不同字符后面插入字符的个数
如
输入:aabscd
输出:aa2b1s1c1d1

输入:aabbbcdd
输出:aa2bbb3c1dd2

思路:从0开始遍历字符串,依次比较两个相邻元素是否相等,
相等,继续逐位比较,记录相同元素的个数count,count初始值为1,
如果不相等将input_str前0到i的i+1个元素给到输出out_str,
input_str剩余的元素len -(i+1)个重新赋值给input_str,因此每次都从0元素开始遍历input_str
初始化i 和count 重新开始下一轮的比较
*/
string transformation(string input_str){
    int len = input_str.length();
    int count = 1;
    string out_str ="";
    if(len < 1){
        return input_str + to_string(count);
    }
    int i = 0;
    while(i < len){
        if(input_str[i] == input_str[i + 1]){
            count++;
            i++;        
        }else{
            //每次都从0开始
            out_str += input_str.substr(0, i + 1);
            out_str += to_string(count);
            input_str = input_str.substr(i+1, len-(i + 1)); 
            len = len - (i + 1);
            //重新count计数
            i = 0; 
            count = 1;  
        } 
       
    }
    return out_str;
}


int main(int argc, char *argv[])
{
    string input_str = "aabbbcdd";
    string out = transformation(input_str); 
    cout<< out << endl;
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值