以下是使用 C++ 实现的代码,它不使用 vector 头文件,通过统计每个字符出现的次数并按照 ASCII 码降序排序来实现字符串压缩:\n\ncpp\n#include <iostream>\n#include <cstring>\nusing namespace std;\n\nint main() {\n freopen("compress.in", "r", stdin);\n freopen("compress.out", "w", stdout);\n\n char str[10000005];\n cin >> str;\n\n int count[128] = {0};\n int len = strlen(str);\n\n // 统计每个字符出现的次数\n for (int i = 0; i < len; i++) {\n count[str[i]]++;\n }\n\n // 按照 ASCII 码从大到小的顺序输出压缩后的字符串\n for (int i = 127; i >= 0; i--) {\n if (count[i] > 0) {\n cout << (char)i << count[i];\n }\n }\n\n return 0;\n}\n\n\n注意,该代码中使用了freopen函数将输入输出重定向到文件中,需要将输入数据保存到名为compress.in的文件中,将输出结果保存到名为compress.out的文件中。如果需要在命令行中运行,可以将freopen函数的部分注释掉,直接从标准输入输出读取和输出数据。\n\n另外,该代码使用了一个大小为128的数组count来统计每个字符出现的次数,其中索引为字符的 ASCII 码值。最后按照 ASCII 码从大到小的顺序遍历数组,输出压缩后的字符串。\n\n输入描述\n\n输入文件:compress.in\n\n输入一行一个字符串,字符串长度不高于1e7\n\n输出描述\n\n输出文件:compress.out\n\n属于一行一个字符串,表示压缩后的字符串的样式\n\n用例输入 1\n\nabcab\n用例输出 1\n\nc1b2a2

C++ 字符串压缩算法:不使用 vector 实现 ASCII 码降序排序压缩

原文地址: https://www.cveoy.top/t/topic/pKo5 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录