練習問題(12-5)ストローク長符号化

4862 ワード

テーマ-練習問題(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 
#include 

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("
"); } return 0; }