题目描述
输入字符串,输出压缩后的字符串。压缩的方法是把连续的相同字母压缩为"长度+字母"的形式,在本题中,单个的字母不需要压缩。
输入
一行,一个字符串,只包含小写英文字母,长度不超过255。
输出
一行,一个字符串,以"长度+字母"的形式输出。
样例输入
aaabbbbbx
样例输出
3a5bx
分析
方法题目中也有讲到:把连续的相同字母压缩为"长度+字母"的形式,在本题中,单个的字母不需要压缩。
所以如果有多个连续的字母,那就输出他的数量(长度)和字母,也就是如果一个字母和下一个字母一样的话,cc(计数变量)就加1。
如果只有一个字母,就只需输出字母本身。
最后还要把cc变回1。
翻译成代码就是:
if(a[i]==a[i+1]){
cc++;
}else{
if(cc==1){
cout<<a[i];
}else{
cout<<cc<<a[i];
}
cc=1;
}
完整代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){
string a;
cin>>a;
int l=a.size();//字符串a的长度
int cc=1;
for(int i=0;i<l;i++){
if(a[i]==a[i+1]){
cc++;
}else{
if(cc==1){
cout<<a[i];
}else{
cout<<cc<<a[i];
}
cc=1;
}
}
return 0;
}