东方博宜 1103 - 字符串压缩

题目描述

输入字符串,输出压缩后的字符串。压缩的方法是把连续的相同字母压缩为"长度+字母"的形式,在本题中,单个的字母不需要压缩。

输入

一行,一个字符串,只包含小写英文字母,长度不超过 255 。

输出

输出压缩的结果。

样例

输入:

aaabbbbbx

输出:

3a5bx

分析:

此题考查字符串的运用和分割法,观察题目,我们可以每当s[i+1]!=s[i]时,我们把它分割即可。我们把g最为计数器当下一个和当前这个不同时,g归零!切记刚开始g的初值必须是0,不然c++会g取随机数

分割法:


int len=str.size(),g=0;
for(int i=0;i<len;i++){
	if(str[i]==str[i+1]&&i!=len-1){
	    g++;
	}else{
		g++;
		if(g!=1) cout<<g<<str[i];
		else cout<<str[i];
		g=0;
	}
	

完整代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
	string str;
	cin>>str;
	int len=str.size(),g=0;
	for(int i=0;i<len;i++){
		if(str[i]==str[i+1]&&i!=len-1){
			g++;
		}else{
			g++;
			if(g!=1) cout<<g<<str[i];
			else cout<<str[i];
			g=0;
		}
	}
	return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值