OR149. 字符串压缩算法
描述
输入一串字符,请编写一个字符串压缩程序,将字符串中连续出现的重复字母进行压缩,并输出压缩后的字符串。 例如: aac 压缩为 1ac xxxxyyyyyyzbbb 压缩为 3x5yz2b
输入描述
任意长度字符串输出描述
压缩后的字符串示例1
输入:
xxxxyyyyyyzbbb
输出:
3x5yz2b
C 解法, 执行用时: 1ms, 内存消耗: 368KB, 提交时间: 2020-08-12
#include <stdio.h> #include <string.h> # define N 1000 int main() { char a[N]; int n=0; gets(a); for(int i = 0 ; i < strlen(a) ; ) { int count=0; for(int j = i; j < strlen(a) ; j++) { if(a[i] == a[j]) { count++; } else { break; } } if(count > 1) { printf("%d",count-1); printf("%c",a[i]); } else { printf("%c",a[i]); } i = i + count; } }
C 解法, 执行用时: 1ms, 内存消耗: 376KB, 提交时间: 2020-07-23
#include <stdio.h> #include <string.h> int main() { char s[1024],ch; gets(s); int len = strlen(s); int i,count = 1; for(i=0;i<len;i++) { ch = s[i]; if(ch == s[i+1])//统计重复字母的个数 count++; else { if(count == 1)//如果没有重复字母,则只打印字母 printf("%c",ch); else if(count >1)//如果有重复字母,则打印重复个数减1,和重复字母 printf("%d%c",count-1,ch); count = 1; } } return 0; }