压缩字符串

压缩字符串

压缩字符串 题目描述 实现一个算法来压缩一个字符串。压缩的要求如下: 1.需要判断压缩能不能节会空间,仅在压缩后字符昌比原字符串长度更短时进行缩。 2.压缩的格式是将连续相同字符替换为字符 +数字形式,列如”AAABCCDDDD”变为”A3BC2D4” 输入描述 输入一行字符串,长度不超过 500 输出描述 输出一行。若输入的字符串可压缩,则输出压缩后的字符否则输出 0。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int n = 0;
char str[500];
char str2[500] = {'\0'};
fgets(str, 500, stdin);
for (int i = 0; i < strlen(str); i++)
{
int times = 1;
str2[n++] = str[i];
for (int j = i + 1; str[i] == str[j]; j++)
{
times++;
i = j;
}
if (times > 1)
{
str2[n++] = '0'+times;
}
}
if (strlen(str2) < strlen(str))
{
puts(str2);
}
else
{
printf("NO");
}
return 0;
}