编写int compress(char s[]),将字符串s连续出现的多个字符压缩成一个字符,函数返回被压缩字符的个数。
例如:“AAbAccDekk”压缩后为“AbAcDek",被压缩的字符数为3。
【代码】

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 20
int compress(char s[])
{int i,j,count=0,pos;for (i = 0; i < strlen(s); i++){if (s[i] == s[i + 1]){count++;pos = i + 1;for (j = pos + 1; j< N; j++)s[j - 1] = s[j];i--;}}return count;
}
int main()
{char s[N];int count;printf("请输入一串字符:\n");gets(s);puts(s);printf("该字符串长度为:%d\n", strlen(s));count = compress(s);printf("压缩的字符个数为%d个\n", count);printf("压缩后的字符为:");puts(s);
}

【解释】
字符串去重和数组去重的方法类似,都是用把去重的那一位字符后一位全部往前挪一个,然后再对这个位置的字符进行判断,看看还和后面的字符一不一样。

值得注意的是,由于字符串以\0结尾,所以不像数组,进行一趟挪位操作后,最后一位就会出现相同的字符,它的\0会顺下来,而字符串遇\0结束。所以考虑遍历次数,还是i<strlen(s)合适。

【C语言数组题】字符串去重相关推荐

  1. JS js实现数组以及字符串去重的方法

    JS js实现数组去重的方法,字符串同样可以用 一.new Set 二.创新数组查询判断加入 三.原数组前后查询比较删除 四.双重for循环遍历去重 五.利用对象不能存储重复属性的特点 方法1: 循环 ...

  2. php数组去重并重新排序,php数组去重_php对数组中字符串去重并排序例子

    摘要 腾兴网为您分享:php对数组中字符串去重并排序例子,智慧大学,长沙银行,愈加,虚拟机等软件知识,以及掌盟,爱情测试打分,7150f打印机驱动,e洗车,报时闹钟,套图,音影风暴,连环夺宝,看门狗2 ...

  3. c语言数组和字符串编程题,C语言中的字符数组和字符串详解

    c语言字符数组和字符串: 1.存放字符的数组称为字符数组 char str[] 2.'\0'也被称为字符串结束标志 3.由" "包围的字符串会自动在末尾添加'\0' 4.逐个字符地 ...

  4. js二维数组arr中表示读取第i行第j列的是:_c++ c语言 数组与字符串

    c语法7 - 数组与字符串 概述 定义:把具有相同类型的若干变量按有序形式组织起来称为数组. C语言数组属于构造数据类型.一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型.因 ...

  5. 【C】C语言数组与字符串(包括:字符串与字符数组)

    在程序设计中,为了方便处理,通常把具有相同类型的若干变量按有序的形式组织起来.这些按序排列的同类数据元素的集合称为数组.在C语言中,数组属于构造数据结构.一个数组可以分解成多个数组元素,这些数组元素可 ...

  6. 数组,字符串去重 ES6方法

    该方法是使用ES6 set方法,它类似于数组,但是成员的值都是唯一的,没有重复的值. 但它本身就是一个数据结构:set数据结构,所以数据需要使用扩展运算符把set数据转换成数组的形式.同样字符转需要使 ...

  7. c语言 数组、字符串的形参格式_华中师范大学计算机考研874C语言笔记(一)

    运算符优先级 自右向左记忆口诀 条件赋值自增减(?: =/+=/-= ++ -- ) 指针取址按位反 (* & ~) 内存非负强制转 (sizeof ! - (type)) define 前面 ...

  8. json c语言 数组转字符串数组中,json和字符串/数组/集合的互相转换の神操作总结...

    一:前端字符串转JSON的4种方式 1,eval方式解析,恐怕这是最早的解析方式了. function strToJson(str){ var json = eval('(' + str + ')') ...

  9. c语言改错题字符串a放在b后面,C语言程序改错题汇总.doc

    程序改错题汇总 1.用"起泡法"对连续输入的十个字符排序后按从小到大的次序输出.分别统计字符串中大写字母和小写字母的个数.求1到10的阶乘的和判断m是否为素数,若是返回1,否则返回 ...

最新文章

  1. springcloud实体类抽离
  2. Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  3. fileinputstream_Java I/O 流之 FileInputStream
  4. 信息安全系统设计基础第八周期中学习总结—20135227黄晓妍
  5. ws flv连接播放得测试代码
  6. java catch自定义异常_Laravel - 自定义处理程序中的Catch异常
  7. 利用HttpWebRequest实现实体对象的上传
  8. python的第三方库是干什么用的-quot;别人造好的轮子”,python常用第三方库——python自动办公7...
  9. bootstrap bootstraptable 固定列_初识Bootstrap
  10. 红外与可见光图像融合(二)之思维导图
  11. 华为USG6000V双机热备HRRP
  12. 【Python数据分析】<数据分析工具>基于Excel的数据分析
  13. 开源路由器-OpenWRT/梅林
  14. 普惠联接,让人类诗意地栖居在大地上
  15. leetcode每日一题27
  16. 刀柄锥度气动量仪检测
  17. 湿地营救机器人_“湿地卫士”创意机器人,真棒!
  18. 查理·芒格的人类误判心理学
  19. 【数学】方差/标准差的各种估计辨析
  20. 西门子PLC S7-200smart连接威伦通触摸屏流程

热门文章

  1. 作为一名优秀的Android 开发,该如何写好自己的简历,android面试算法题
  2. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第39讲:PHP数据库编程MySQLi扩展库
  3. #(四)、(五)拟合数学方法的发展简介
  4. TestDirector自定义管理:用户配置
  5. 阿里聚安全 2016 年报阿里聚安全 2016 年报
  6. 2019南昌邀请赛网络赛
  7. [转载] 信息系统项目管理师视频教程——29 信息系统监理
  8. 关于CH340驱动安装的种种问题的最终稳妥解决办法
  9. 软碟通 UltraISO V9.6.0.3000 官方多语言安装版(附注册码)
  10. java论文怎么去写_本硕毕业论文的写法技巧与心得