字符串的压缩(c语言描述)

本文深入探讨了一种字符串压缩算法,该算法通过记录连续字符的出现次数来实现字符串的压缩,例如将aaabccccaa压缩为a3b1c4a2。文章详细介绍了算法的实现思路及C语言代码实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:

连续字符出现次数,保证字符串内均由大小写字母组成
如:aaabccccaa
压缩为:a3b1c4a2

思路:

先往新数组中填入一个字母,然后循环并记录个数直到当前字母不等于前一个字母,则填入数字并清0重新计算接着填入当前字母,最后在循环外填入最后一次的数字

代码:
#include <stdio.h>
#include <string.h>
int main()
{
	char ch[] = "aaabccccaaF";
	int len = strlen(ch); //获取ch长度
	int count = 0, p = 0;
	int * cm = new int[len*2]; //创建数组存放压缩后的字符串
	for (int i = 0; i < len; i++)
	{
		if (count == 0) //第一遍循环进入
		{
			cm[p] = ch[i]; //填入字母
			p++;
		}
		if (ch[i - 1] != ch[i] && i != 0) //第二遍往后符合条件进入,当前一个和当前字母不相同时
		{
			cm[p] = count + '0'; //数字转ascll,并填入
			p++;
			count = 1;	
			cm[p] = ch[i]; //填入字母
			p++;
		}
		else
		{
			count++;
		}
	}
	cm[p] = count + '0';//数字转ascll,并填入
	p++;
	for (int i = 0; i < p; i++)
	{
		printf("%c", cm[i]);
	}
	return 0;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值