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语言能够有所帮助。

相关文章

  • Pipes实现LeetCode(192.单词频率)

    Pipes实现LeetCode(192.单词频率)

    这篇文章主要介绍了Pipes实现LeetCode(192.单词频率),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • Matlab实现带竖线散点的核密度图的绘制

    Matlab实现带竖线散点的核密度图的绘制

    核密度估计是用于估计随机变量概率密度函数的一种非参数方法。核密度图不失为一种用来观察连续型变量分布的有效方法。本文将用Matlab实现带竖线散点的核密度图的绘制,感兴趣的可以了解一下
    2022-08-08
  • C/C++举例讲解关键字的用法

    C/C++举例讲解关键字的用法

    相对于其他语言来说,C语言的关键字算是少的了。在C98中关键子总共只有32个,我们来分析一下部分关键字在C/C++中它独特的作用
    2022-05-05
  • C语言中0数组\柔性数组的使用详解

    C语言中0数组\柔性数组的使用详解

    这篇文章主要给大家介绍了关于C语言中0数组\柔性数组使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • 关于VS2019 C++项目同时出现LNK2005 和LNK1169 error 的解决办法

    关于VS2019 C++项目同时出现LNK2005 和LNK1169 error 的解决办法

    这篇文章主要介绍了关于VS2019 C++项目同时出现LNK2005 和LNK1169 error 的解决办法,本文给大家介绍的非常详细,对大家的学习工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • C++可视化角色按键移动控制的实现

    C++可视化角色按键移动控制的实现

    这篇文章主要介绍了C++可视化角色按键移动控制的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2020-03-03
  • C++中函数模板的用法详细解析

    C++中函数模板的用法详细解析

    所谓函数模板实际上是建立一个通用函数,其涵涵素类型额形参类型不具体指定,用一个虚拟的类型来代表,这个通用函数就称为函数模板
    2013-10-10
  • VS2019调试C语言程序(监视操作)的详细步骤

    VS2019调试C语言程序(监视操作)的详细步骤

    在很多时候我们在写程序的过程中会发现一些非编程错误的问题,这样的问题很难直接分辨出来,但是我们可以用调试了一步一步的模拟程序运行的过程,来找出程序的错误,下面这篇文章主要给大家介绍了关于VS2019调试C语言程序(监视操作)的详细步骤,需要的朋友可以参考下
    2022-11-11
  • C++实现通讯录管理系统项目

    C++实现通讯录管理系统项目

    这篇文章主要为大家详细介绍了C++实现通讯录管理系统项目,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • C++程序自动重启的实现代码

    C++程序自动重启的实现代码

    自动重启原理很简单,用一个进程监控另一个进程,挂了就再启动一个,细节也不算多,主要是正确判断进程状态和启动方式,本文就给大家讲讲C++程序自动重启的实现方法,文中有详细的代码示例供大家参考,需要的朋友可以参考下
    2024-04-04

最新评论