压缩字符串
压缩字符串 题目描述 实现一个算法来压缩一个字符串。压缩的要求如下: 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; }
|