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 }