0
已解决
#include<bits/stdc++.h>
using namespace std;
int main(){
string s,d,l;
cin>>s;
int cnt;
char g;
for(int i=0;i<s.length();i++){
if(!(s[i]>='a'&&s[i]<='z')){
s=s.erase(i,1);
i--;
}
}
for(int i=0;i<s.length();i++){
if(s[i]==s[i+1]){
g=s[i];
for(int j=i;j<s.length();j++){
if(s[j]==g){
cnt++;
}
else{
break;
}
}
d+=g;
while(cnt!=0){
l+=(char)(cnt%10+48);
cnt/=10;
if(cnt==0){
break;
}
}
for(int k=l.length()-1;k>=0;k--){
d+=l[i];
}
i+=(cnt-1);
cnt=0;
l="";
}
else{
d+=s[i];
}
}
cout<<d;
return 0;
}
我的代码为什么是死循环
2852 字符串擦除字符并压缩
题目描述 Description
给出一个全部由小写字母和数字组成的字符串。请先将这个字符串中的数字全部擦除。然后为了将这个字符串存储起来,并且尽可能地节省空间,现在将多个连续出现的相同字母,改写成这个字母本身后面跟上最长的连续的个数的形式。比如"…baaaaac…"这个部分可以改写成"…ba5c…"(连续出现的个数可能会超过10个)。如果字符一个个单独出现,则不需要压缩。给出一个 字符串,试着输出经处理的结果。
输入描述 Input Description
一行,一个字符串,含有小写字母和数字
输出描述 Output Description
处理之后的字符串的结果
样例输入 Sample Input
aaaaaa5bbbb323b2g
样例输出 Sample Output
a6b5g
0
已采纳
1
0