首页 热点资讯 义务教育 高等教育 出国留学 考研考公

使用C语言实现字符串的压缩。

发布网友 发布时间:2022-04-26 14:26

我来回答

3个回答

热心网友 时间:2023-10-10 08:16

/*
原串: 111225555
压缩后: 312245
原串: 333AAAbbbb
压缩后: 333A4b
原串: ASXDCdddddd
压缩后: 1A1S1X1D1C6d
Press any key to continue
*/

#include <stdio.h>
#include <string.h>

char *CompressStr(char s[]) {
char t[255];
int i = 0,j,k = 0;
while(s[i]) {
j = i + 1;
while(s[i] == s[j]) ++j;
t[k++] = j - i + '0';
t[k++] = s[i];
i = j;
}
t[k] = '\0';
strcpy(s,t);
return s;
}

int main(void) {
char i,s[][20] = {"111225555","333AAAbbbb","ASXDCdddddd"};
for(i = 0; i < 3; ++i) {
printf("原串: %s\n",s[i]);
printf("压缩后: %s\n",CompressStr(s[i]));
}
return 0;
}

热心网友 时间:2023-10-10 08:16

111225555 : 3个1,2个2,4个5;
333AAAbbbb:3个3,3个A,4个b;

找到规律了,定义一个数组,使用指针指向第一个地址,挨个查找,统计出来就行了。追问不好意思,我不会啊,可不可以帮我写出来程序,感激涕零!!!

热心网友 时间:2023-10-10 08:17

  如果数据结构是数组的话,主要是要解决两个问题,一是统计重复的字符,二是确定数组压缩后每个元素在数组中所处的位置。
  可以用一个指针遍历数组,另一个指针标记存储位置。
  字符串或串(String)是由数字、字母、下划线组成的一串字符。一般记为 s="a1a2···an"(n>=0)。它是编程语言中表示文本的数据类型。
  通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com