B:編碼字符串
- 總時間限制:
- 1000ms
- 內存限制:
- 65536kB
- 描述
-
在數據壓縮中,一個常用的方法是行程長度編碼壓縮。對於一個待壓縮的字符串,我們可以依次記錄每個字符及重複的次數。例如,待壓縮的字符串爲"aaabbbbcbb",壓縮結果爲(a,3)(b,4)(c,1)(b,2)。這種壓縮對於相鄰數據重複較多的情況有效,如果重複狀況較少,則壓縮的效率較低。
現要求根據輸入的字符串,首先將字符串中所有大寫字母轉化爲小寫字母,然後將字符串進行壓縮。
- 輸入
- 一個字符串,長度大於0,且不超過1000,全部由大寫或小寫字母組成。
- 輸出
- 輸出爲編碼之後的字符串,形式爲:(a,3)(b,4)(c,1)(d,2),即每對括號內分別爲小寫字符及重複的次數,不含任何空格。
- 樣例輸入
-
aAABBbBCCCaaaaa
- 樣例輸出
-
(a,3)(b,4)(c,3)(a,5)
- 來源
- cs10116 final exam
- 這道題很簡單,千萬不要被誤導先保存再輸出,就邊判斷邊輸出就行
#include <cstdio> #include <cstring> using namespace std; int main() { char buf[1001]; scanf("%s",buf); int len=strlen(buf); int i; for(i=0;i<len;i++){ if(buf[i]>='A'&&buf[i]<='Z'){ buf[i]+=32; } } i=0; char tmp; int cnt; while(i<len){ tmp=buf[i]; cnt=0; while(buf[i]==tmp){ i++; cnt++; } printf("(%c,%d)",tmp,cnt); } printf("\n"); return 0; }