习题(12-5) 行程长度编码

题目 – 习题(12-5) 行程长度编码  
描述
在数据压缩中,一个常用的途径是行程长度压缩。对于字符串而言,我们可以依次记录每个字符及重复的次数。这种压缩,对于相邻数据重复较多的情况比较有效。例如,如果待压缩串为”AAABBBBCBB”,压缩结果是(A,3)(B,4)(C,1)(B,2)。当然,如果相邻字符重复情况较少,则压缩效率就较低。 
现要求根据输入的字符串,得到大小写不敏感压缩后的结果。

关于输入
一个字符串,长度大于0,且不超过1000,全部由大小写字母组成。

关于输出
输出为一行,表示压缩结果,形式为(A,3)(B,4)(C,1)(B,2),即每对括号内部分别为字符(都为大写)及重复出现的次数。

例子输入
aaabbbcccd



或



aAABBbBCCCaaaaa
例子输出
(A,3)(B,3)(C,3)(D,1)



或



(A,3)(B,4)(C,3)(A,5)
#include <stdio.h>
#include <ctype.h>

int main()
{
	char x[1024];
	int n = 1;
	char *p;

	while (gets(x) && *x)
	{
		for (p = x; *p; ++p)
		{
			*p = toupper(*p);
		}
		for (p = x; *p; ++p)
		{
			if (*p == *(p + 1))
			{
				++n;
			}
			else
			{
				printf("(%c,%d)", *p, n);
				n = 1;
			}
		}
		printf("\n");
	}

	return 0;
}
    原文作者:游程编码问题
    原文地址: https://blog.csdn.net/caopeng_pku/article/details/40581815
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞