压缩字符串,用户输入一个字符串,将挨着的并且相同的字符压缩 原字符串: abbcccdfttttty 压缩后: a2b3cdf5ty利用c语言写出一个代码给我
时间: 2023-12-27 17:02:37 浏览: 115
好的,以下是一个使用 C 语言实现字符串压缩的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* compress_string(char* s) {
if (!s || !strlen(s)) {
return "";
}
char* result = (char*) malloc(sizeof(char) * (strlen(s) * 2 + 1));
char current_char = s[0];
int count = 1;
int index = 0;
for (int i = 1; i < strlen(s); i++) {
if (s[i] == current_char) {
count++;
} else {
index += sprintf(&result[index], "%c%d", current_char, count);
current_char = s[i];
count = 1;
}
}
index += sprintf(&result[index], "%c%d", current_char, count);
result[index] = '\0';
return result;
}
int main() {
char s[] = "abbcccdfttttty";
char* result = compress_string(s);
printf("Original string: %s\n", s);
printf("Compressed string: %s\n", result);
free(result);
return 0;
}
```
该代码中,我们首先判断输入字符串是否为空,然后利用 `malloc()` 分配一个足够大的字符数组来存储压缩后的字符串。接着,我们遍历输入字符串,记录当前字符和它出现的次数。当遇到一个新字符时,就将之前的字符和出现次数添加到结果中,并更新当前字符和计数器。最后,需要将最后一个字符和出现次数添加到结果中,并将结果字符串的最后一个字符设为 NULL,以表示字符串的结束。
例如,使用该函数对字符串"abbcccdfttttty"进行压缩,会得到"a2b3c3d1f1t4y1"。
阅读全文