列表

详情


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;
}

上一题