兰州大学上机题——字符串压缩

Valencia ·
更新时间:2024-11-13
· 965 次阅读

兰州大学上机题——字符串压缩

题目描述:
字符串压缩,比如xxxxxdddfff,输出x5d3f3

算法思路:
设置一个索引,一个计数器,依次将当前的字符和前一个进行比较,如果相同,则计数器自增,索引后移;如果不同,将当前的字符加入到压缩字符中,并加入计数器的数字,然后计数器重置。

#include #include using namespace std; string compress(string str) { //定义一个新字符串存储压缩的字符串 string cstr; int i = 1, count = 1; //令压缩字符串初始为字符串的第一个元素 cstr = str[0]; while (str[i] != '\0') { //如果碰到不同的元素,就让压缩字符串更新,同时令计数器重新变为1 if (str[i] != str[i - 1]) { cstr += char(count + '0'); cstr += str[i]; count = 1; } else { //如果碰到相同元素,则计数器自增 count++; } //指针后移 i++; } //最后压缩字符串更新最后一个数字 cstr += char(count + '0'); return cstr; } int main() { string str; cout <> str; string cstr = compress(str); cout << cstr << endl; return 0; }

运行测试结果:
在这里插入图片描述


作者:ME!



字符串 大学 压缩 字符

需要 登录 后方可回复, 如果你还没有账号请 注册新账号