当前位置: 首页 > news >正文

C语言-字符串连续出现字母进行压缩

字符串连续出现的字母进行压缩

举例:输入为xxxyyyyyyz

压缩后为 3x6yz

解题思路:

将输入的数组的话,主要是要解决两个问题,一是统计重复的字符,二是确定数组压缩后每个元素在数组中所处的位置。
可以用一个指针遍历数组,另一个指针标记存储位置。

#include <stdio.h>
#include <string.h>
#include <MacTypes.h>
#include <stdlib.h>
void string_compress(char s[]);
int main()
{
    char str[] = {'\0'};
    scanf("%s",str);
    string_compress(str);
    printf("The result is : %s\n",str);
    return 0;
}
void string_compress(char s[])
{
    int i, j;
    int count;
    int len = strlen( s );
    if( s == NULL )
        return;
    for( i = 0, j = 0; i < len; i++ )        /*j用于标记存储位置*/
    {
        count = 1;        /*在遍历过程中统计每个字符连续出现的位置*/
        while( s[i] == s[i + 1] )
        {
            i++;
            count++;
        }
        if( count > 1 )
        {
            s[j] = count + '0';/*将整型数据count转换为字符*/
            j++;               /*位置j存数字,j + 1存字符*/
            s[j] = s[i];
        }
        else
            s[j] = s[i];
        j++;
    }
    s[j] = '\0';             /*字符串末尾加结束符*/

}

相关文章:

  • C语言数组引用
  • c语言中二维数据的存储方式
  • C语言-注释符
  • C语言%d%c%f
  • C语言-定义一个字符串
  • 2019
  • Mac上配置SublimeText运行C语言
  • C语言-按规则读取指定文件(2016.七)
  • C语言-统计文本文件中字母出现次数
  • warning: this program uses gets(), which is unsafe.
  • Linux查看一个文件夹下所有文件大小
  • Windows下安装搭建NodeJS环境
  • vue与node和npm关系
  • Windows下安装搭建npm环境
  • Markdown查看器-typora
  • @angular/forms 源码解析之双向绑定
  • 10个确保微服务与容器安全的最佳实践
  • 2017届校招提前批面试回顾
  • 4个实用的微服务测试策略
  • FineReport中如何实现自动滚屏效果
  • java 多线程基础, 我觉得还是有必要看看的
  • Linux CTF 逆向入门
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 番外篇1:在Windows环境下安装JDK
  • 说说动画卡顿的解决方案
  • 算法---两个栈实现一个队列
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • FaaS 的简单实践
  • Hibernate主键生成策略及选择
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • $.ajax()参数及用法
  • ${ }的特别功能
  • (2015)JS ES6 必知的十个 特性
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (力扣题库)跳跃游戏II(c++)
  • (数据结构)顺序表的定义
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • ****Linux下Mysql的安装和配置
  • .NET MVC第三章、三种传值方式
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • .NET下的多线程编程—1-线程机制概述
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!
  • @ModelAttribute使用详解
  • [ CTF ]【天格】战队WriteUp- 2022年第三届“网鼎杯”网络安全大赛(青龙组)
  • [.net] 如何在mail的加入正文显示图片
  • [20170705]diff比较执行结果的内容.txt