问题标题: 字符串相关

0
0

0
已采纳
宋铨宸
宋铨宸
初级守护
初级守护

有一种简单的字符串压缩算法,对于字符串中连续出现的同一个字符用该字符加上连续出现次数来表示,连续出现次数小于3时不压缩。例如,字符串aaaaabbbabaaaaaaaaaaaaabbbb,可压缩为a5b3aba13b4.设计一个程序,将采用该压缩方法得到的字符串解压缩还原出原字符串并输出.

输入示例:

a5b3aba13b4

输出示例:

aaaaabbbabaaaaaaaaaaaaabbbb

#pragma warning(disable:4996)
 
#include<stdio.h>
#include<string.h>
#define M 20
int main()
{
    char str[50];
    while (scanf("%s", str) != EOF)
    {
        int len = strlen(str);
        int i = 0,n = 0;
        char c;
        while (i < len)
        {
            if (str[i] >= 'a'&&str[i] <= 'z')
            {
                while(n>1)
                {
                    printf("%c", c); //打印上一位字符
                    n--;
                }
                n = 0;
                c = str[i];
                printf("%c", c); //先将当前位上的字母打印出来
            }
            if (str[i] >= '0'&&str[i] <= '9')
            {
                n = n * 10 + str[i] - '0';  //记录当前位需要打印的次数
            }
            i++;
        }
        while (n > 1)
        {
            printf("%c", c); //若最后若干位为数字,则打印
            n--;
        }
        printf("\n");
    }
    return 0;
}

宋铨宸在2019-05-12 14:10:52追加了内容

望楼主采纳

 

0
0
0
我要回答