32:行程長度編碼

自為風月馬前卒發表於2017-03-06

32:行程長度編碼

總時間限制: 
1000ms
 
記憶體限制: 
65536kB
描述

在資料壓縮中,一個常用的途徑是行程長度壓縮。對於一個待壓縮的字串而言,我們可以依次記錄每個字元及重複的次數。這種壓縮,對於相鄰資料重複較多的情況比較有效。 例如,如果待壓縮串為"AAABBBBCBB",則壓縮的結果是(A,3)(B,4)(C,1)(B,2)。當然,如果相鄰字元重複情況較少,則壓縮效率就較低。

現要求根據輸入的字串,得到大小寫不敏感壓縮後的結果(即所有小寫字母均視為相應的大寫字母)。

輸入
一個字串,長度大於0,且不超過1000,全部由大寫或小寫字母組成。
輸出
輸出為一行,表示壓縮結果,形式為:
(A,3)(B,4)(C,1)(B,2)
即每對括號內部分別為字元(都為大寫)及重複出現的次數,不含任何空格。
樣例輸入
aAABBbBCCCaaaaa
樣例輸出
(A,3)(B,4)(C,3)(A,5)
來源
習題(12-5)
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 #include<cstring>
 5 using namespace std;
 6 char a[10001];
 7 int tot=1;
 8 int main()
 9 {
10     gets(a);
11     int l=strlen(a);
12     for(int i=0;i<l;i++)
13     {
14         if(a[i]>=97&&a[i]<=122)
15         {
16             a[i]=a[i]-32;
17         }
18     }
19     for(int i=0;i<l;i++)
20     {
21         if(a[i]==a[i+1])
22         {
23             tot++;
24         }
25         else
26         {
27             printf("(%c,%d)",a[i],tot);
28             tot=1;    
29         }
30     }
31     return 0;
32 }

 

相關文章