C语言代码写字符串只压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。 比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短, 则返回原先的字符串。你可以假设字符串中只包含大小写英文字母 (a至z)。
时间: 2023-05-17 19:05:59 浏览: 240
C语言–压缩字符串
5星 · 资源好评率100%
以下是一个简单的 C 语言代码示例,用于实现基本的字符串压缩功能:
```c
#include <stdio.h>
#include <string.h>
char* compress(char* str) {
int len = strlen(str);
char* result = (char*)malloc(len * 2 + 1);
int count = 1;
char last = str[0];
int j = 0;
for (int i = 1; i < len; i++) {
if (str[i] == last) {
count++;
} else {
result[j++] = last;
sprintf(result + j, "%d", count);
j = strlen(result);
count = 1;
last = str[i];
}
}
result[j++] = last;
sprintf(result + j, "%d", count);
j = strlen(result);
if (j >= len) {
return str;
} else {
return result;
}
}
int main() {
char str[] = "aabcccccaaa";
printf("%s\n", compress(str));
return 0;
}
```
该代码使用了一个计数器来记录每个字符出现的次数,并将其转换为数字字符串。最后,将所有字符和数字字符串连接起来,形成压缩后的字符串。如果压缩后的字符串长度不小于原字符串长度,则返回原字符串。
阅读全文