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