天天看點

算法學習之路|字元串壓縮與解壓

文本壓縮有很多種方法,這裡我們隻考慮最簡單的一種:把由相同字元組成的一個連續的片段用這個字元和片段中含有這個字元的個數來表示。例如 ccccc 就用 5c 來表示。如果字元沒有重複,就原樣輸出。例如 aba 壓縮後仍然是 aba。

解壓方法就是反過來,把形如 5c 這樣的表示恢複為 ccccc。

本題需要你根據壓縮或解壓的要求,對給定字元串進行處理。這裡我們簡單地假設原始字元串是完全由英文字母和空格組成的非空字元串。

輸入格式:

輸入第一行給出一個字元,如果是 C 就表示下面的字元串需要被壓縮;如果是 D 就表示下面的字元串需要被解壓。第二行給出需要被壓縮或解壓的不超過1000個字元的字元串,以回車結尾。題目保證字元重複個數在整型範圍内,且輸出檔案不超過1MB。

輸出格式:

根據要求壓縮或解壓字元串,并在一行中輸出結果。

輸入樣例 1:

C

TTTTThhiiiis isssss a tesssst CAaaa as

輸出樣例 1:

5T2h4is i5s a3 te4st CA3a as

輸入樣例 2:

D

5T2h4is i5s a3 te4st CA3a as10Z

輸出樣例 2:

TTTTThhiiiis isssss a tesssst CAaaa asZZZZZZZZZZ

解題思路:

遇到阿拉伯數字n即輸出n個阿拉伯數字後的字母。

遇到重複的字母,記錄,當記錄大于1的時候,輸出這個記錄并且加上字母。

注意點:有連續的阿拉伯數字時,需要把這些組成一個阿拉伯數字

栗子:123并非 1,2,3。而是一百二十三。

詳情見代碼:

繼續閱讀