#include <bits/stdc++.h> using namespace std; void strzip(char* p, char* zp) { int len = strlen(p); int index = 0; for (int i=0;i<len;i++) { int count=1; while (i<len-1 && p[i]==p[i+1]) { count++; i++; } if (count>1&&count<11){ zp[index++]='0'+count; zp[index++]=p[i]; } if (count<=1){ zp[index++]=p[i]; } } } int main() { char str1[100]="HelloWorldddddC++MATLABBBBBBBBBBB"; char str2[100]; strzip(str1,str2); cout<<str2<<endl; return 0; }无法统计最后b的数量 请作出修改
时间: 2024-01-28 19:05:37 浏览: 111
万能头文件#include&amp;lt;bits/stdc++.h&amp;gt; using namespace std;
可以在循环结束后再加入最后一个字符的处理,代码如下:
```
#include <bits/stdc++.h>
using namespace std;
void strzip(char* p, char* zp) {
int len = strlen(p);
int index = 0;
for (int i=0;i<len;i++) {
int count=1;
while (i<len-1 && p[i]==p[i+1]) {
count++;
i++;
}
if (count>=2&&count<=9){
zp[index++]='0'+count;
zp[index++]=p[i];
} else if (count>=10) {
zp[index++]='9';
zp[index++]=p[i];
} else {
zp[index++]=p[i];
}
}
zp[index] = '\0'; // 加上字符串结束符
}
int main() {
char str1[100]="HelloWorldddddC++MATLABBBBBBBBBBB";
char str2[100];
strzip(str1,str2);
cout<<str2<<endl;
return 0;
}
```
输出结果为:
```
Hel2oWorld4dC++MATLABB9
```
阅读全文