練習問題(12-5)ストローク長符号化
4862 ワード
テーマ-練習問題(12-5)ストローク長符号化
説明
データ圧縮では、ストローク長圧縮が一般的です.文字列の場合、各文字と繰り返しの回数を順次記録できます.この圧縮は,隣接データの重複が多い場合に有効である.例えば、圧縮対象列が「AAABBBBCBB」である場合、圧縮結果は(A,3)(B,4)(C,1)(B,2)である.もちろん、隣接文字の重複が少ない場合、圧縮効率は低くなります.入力した文字列に基づいて、大文字と小文字が敏感に圧縮された結果を得ることが要求される.
例出力
説明
データ圧縮では、ストローク長圧縮が一般的です.文字列の場合、各文字と繰り返しの回数を順次記録できます.この圧縮は,隣接データの重複が多い場合に有効である.例えば、圧縮対象列が「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;
}