微软面试题 07012012[2]

本文介绍了两种不同的字符串压缩算法实现方式,这两种方法都是针对重复字符序列进行压缩处理,以减少存储空间的需求。通过示例代码展示了如何统计连续字符的数量并将其转换为特定格式,如将AAABBGFF压缩为3{A}
/*
Given AAABBGFF should get an output 3{A} 2{B}1{G}2{F}
*/

//解法一
#include <iostream>

void transStr(char* s)
{
	int len = strlen(s);

	char curChar = ' ';
	char preChar = ' ';
	int count = 0;

	for(int i = 0; i < len; i++)
	{
		curChar = s[i];

		if(curChar != preChar)
		{
			if(i != 0)
			{
				printf("%d", count);
				printf("{%c}", preChar);
			}
			count = 0;
			preChar = curChar;
		}
		count++;
	}

	printf("%d", count);
	printf("{%c}", preChar);

};

int main()
{
	char str[20] = "AAABBGFF";

	transStr(str);

	return 0;
}
//解法二

#include <iostream>

void transStr(char* s)
{
	int i = 0;

	int count = 0;

	while(i < strlen(s))
	{
		while(s[i] == s[i + 1])
		{
			i++;
			count++;
		}

		count++;
		printf("%d{%c}", count, s[i]);
		count = 0;

		i++;
	}

};

int main()
{
	char str[20] = "AAABBGFF";

	transStr(str);

	return 0;
}




                
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值