2017北大信科夏令營機試B:編碼字符串

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;
}



發佈了48 篇原創文章 · 獲贊 16 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章