C语言字符串快速压缩算法代码

 更新时间:2015年03月10日 15:40:27   投稿:hebedich  
这篇文章主要介绍了C语言字符串快速压缩算法代码,将字符串中连续出席的重复字母进行压缩,其主要的压缩字段的格式为”字符重复的次数+字符”。有需要的小伙伴参考下吧。

通过键盘输入一串小写字母(a~z)组成的字符串。
请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。

压缩规则:

1、仅压缩连续重复出现的字符。比如字符串”abcbc”由于无连续重复字符,压缩后的字符串还是”abcbc”。
2、压缩字段的格式为”字符重复的次数+字符”。例如:字符串”xxxyyyyyyz”压缩后就成为”3x6yz”。

示例

输入:“cccddecc” 输出:“3c2de2c”
输入:“adef” 输出:“adef”
输入:“pppppppp” 输出:“8p”

主要说来就是进行字符串处理类的问题,主要涉及到:

1.字符串的输入与输出;
2.基本常用的C语言的字符串的函数使用;
3.对于多重情况的考虑;
4.将数字转换成字符串并进行拼接;

复制代码 代码如下:

#include <stdio.h> 
#include <string.h> 
#include <stdlib.h> 
int main() 

    char str[100] = {'\0'}; 
    char res[100] = {'\0'}; 
    scanf("%s",str); 
    int length = strlen(str); 
    int i=0, j=0, k=0; 
    int count = 0; 
    do 
    { 
        if(i < length && str[i++] == str[j]) 
            count++; 
        if(str[i] != str[j]) 
        { 
            if(count <= 1) 
                res[k++] = str[j]; 
            else 
            { 
                if(count > 1) 
                { 
                    char temp[10] = {'\0'}; 
                    itoa(count,temp,10); 
                    strcpy(res+k,temp); 
                    k+=strlen(temp); 
                    res[k++] = str[j]; 
                } 
            } 
            j = i; 
            count = 0; 
        } 
    }while(i<length); 
    res[k] = '\0'; 
    printf("The result is : %s\n",res); 
    return 0; 

以上就是本文给大家分享的字符串压缩算法的全部内容了,希望对大家学习C语言能够有所帮助。

相关文章

  • floyd算法实现思路及实例代码

    floyd算法实现思路及实例代码

    这篇文章主要介绍了floyd算法实现思路及实例代码,有需要的朋友可以参考一下
    2014-01-01
  • 深入解析C++中的字符数组和处理字符串的方法

    深入解析C++中的字符数组和处理字符串的方法

    这篇文章主要介绍了深入解析C++中的字符数组和处理字符串的方法,需要的朋友可以参考下
    2015-09-09
  • C#使用反射加载多个程序集的实现方法

    C#使用反射加载多个程序集的实现方法

    下面小编就为大家带来一篇C#使用反射加载多个程序集的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • C++动态内存管理详解

    C++动态内存管理详解

    今天小编就为大家分享一篇关于关于C++动态分配内存的介绍,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2021-08-08
  • 用C语言实现通讯录

    用C语言实现通讯录

    这篇文章主要为大家详细介绍了用C语言实现通讯录,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • 深入理解C语言的逻辑控制

    深入理解C语言的逻辑控制

    这篇文章主要介绍了C语言的逻辑控制,对C语言的逻辑控制有较为深入的剖析,需要的朋友可以参考下
    2014-07-07
  • c++动态内存管理与智能指针的相关知识点

    c++动态内存管理与智能指针的相关知识点

    为了更容易同时也更安全地使用动态内存,新的标准库提供了两种智能指针(smart pointer)类型来管理对象,下面这篇文章主要给大家介绍了关于c++动态内存管理与智能指针的相关知识点,需要的朋友可以参考下
    2022-03-03
  • C语言实现BMP图像细化处理

    C语言实现BMP图像细化处理

    这篇文章主要为大家详细介绍了C语言实现BMP图像细化处理,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • 解决Qt设置QTextEdit行高的问题

    解决Qt设置QTextEdit行高的问题

    这篇文章介绍了Qt设置QTextEdit行高的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • 关于C语言多线程pthread库的相关函数说明

    关于C语言多线程pthread库的相关函数说明

    下面小编就为大家带来一篇关于C语言多线程pthread库的相关函数说明。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05

最新评论