题目描述
输入字符串,输出压缩后的字符串。压缩的方法是把连续的相同字母压缩为"长度+字母"的形式,在本题中,单个的字母不需要压缩。
输入
一行,一个字符串,只包含小写英文字母,长度不超过 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;
}