字符串压缩算法5.11

字符串压缩算法

有一种简单的字符串压缩算法,对于字符串中连续出现的同一字符,用该字符加上连续出现的次数来表示(连续出现次数小于3的不压缩)。

设计程序,将采用该压缩方法压缩后的字符串解压还原为原字符串并输出。

输入样例:

ab5a10c5

输出样例:

abbbbbaaaaaaaaaaccccc

办法分析
对输入的字符串进行逐个扫描,如果遇到字符串直接输出,如果遇到数字,则逐个读取数字字符将其转为int型数字,然后输出该数字个前一字符。

代码实现

#include <stdio.h>
#include <ctype.h>
int main(){
	char input[20],tmp,c;
	int i=0;
	gets(input);
	
	while(input[i]){
		c=input[i];
		if(tolower(c)>='a'&&tolower(c)<='z') {
			printf("%c",c);
			i++;
		}
		else if(c>='0'&&c<='9'){
			tmp=input[i-1];
			int num=0;
			while(input[i]>='0'&&input[i]<='9'){	
				num=num*10+input[i]-'0';
				i++;	
			}
			num-=1;	
			while(num--){
				printf("%c",tmp);
			}
		}
	}
	return 0;
} 

参考代码

#include <stdio.h>
int main()
{
    int i = 0, sum, count, k;
    char s[50];
    gets(s);
    while (s[i])
    {
        printf("%c", s[i]);
        i++;
        sum = 0;
        count = 0;
        while (s[i] >= '0' && s[i] <= '9')
        {
            sum = sum * 10 + s[i] - '0';
            i++;
            count++;
        }
        for (k = 0; k < sum - 1; k++)
            printf("%c", s[i - count - 1]);
    }
    return 0;
}

链接:
https://mp.weixin.qq.com/s/SZwH2T_GBMJscpL-sf4OJw

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值