C++且不使用vector头文件完成:从电脑输入一个合法的英文字符构成的字符串将这个字符串按照ASCII码从大到小的顺序进行压缩后输出压缩规则是每个字符如果在这个字符串中出现了很多次则只输出这个字符后紧接着输出这个字符总共出现的次数输入描述输入文件:compressin输入一行一个字符串字符串长度不高于1e7输出描述输出文件:compressout属于一行一个字符串表示压缩后的字符串的样式用例输入
以下是使用C++实现的代码:
#include <iostream>
#include <cstring>
using namespace std;
int main() {
freopen("compress.in", "r", stdin);
freopen("compress.out", "w", stdout);
char str[10000005];
cin >> str;
int count[128] = {0};
int len = strlen(str);
// 统计每个字符出现的次数
for (int i = 0; i < len; i++) {
count[str[i]]++;
}
// 按照ASCII码从大到小的顺序输出压缩后的字符串
for (int i = 127; i >= 0; i--) {
if (count[i] > 0) {
cout << (char)i << count[i];
}
}
return 0;
}
注意,该代码中使用了freopen函数将输入输出重定向到文件中,需要将输入数据保存到名为compress.in的文件中,将输出结果保存到名为compress.out的文件中。如果需要在命令行中运行,可以将freopen函数的部分注释掉,直接从标准输入输出读取和输出数据。
另外,该代码使用了一个大小为128的数组count来统计每个字符出现的次数,其中索引为字符的ASCII码值。最后按照ASCII码从大到小的顺序遍历数组,输出压缩后的字符串
原文地址: http://www.cveoy.top/t/topic/h1lK 著作权归作者所有。请勿转载和采集!