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

2021-09-20 23:54:45 字數 1097 閱讀 2144

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

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

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

輸入格式:

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

輸出格式:

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

輸入樣例 1:

cttttthhiiiis isssss a tesssst caaaa as

輸出樣例 1:

5t2h4is i5s a3 te4st ca3a as

輸入樣例 2:

d5t2h4is i5s a3 te4st ca3a as10z

輸出樣例 2:

ttttthhiiiis isssss a tesssst caaaa aszzzzzzzzzz

解題思路:

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

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

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

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

詳情見**:

#include#includeusing namespace std;

int main()

else if (ch2!=ch&&ch2!='\0')

else

}int n2;

sscanf(str, "%d",&n2);

for(int i=0;i}

else}}

}

字串編碼解壓縮演算法

前幾天,有乙個學c的小夥伴和我交流乙個問題,問題他是這麼說的 傳入乙個字串,格式要求如下 ep a2d3b4c1d2 那麼將這個字串解壓的結果應為 aadddbbbbcdd 規則就是,必須滿足,字串的第乙個是字母,可以大寫也可以小寫,第二個為數字,範圍為1 9,解壓的長度不得超過1000個字元。按照...

PAT乙級 字串壓縮與解壓

文字壓縮有很多種方法,這裡我們只考慮最簡單的一種 把由相同字元組成的乙個連續的片段用這個字元和片段中含有這個字元的個數來表示。例如ccccc就用5c來表示。如果字元沒有重複,就原樣輸出。例如aba壓縮後仍然是aba。解壓方法就是反過來,把形如5c這樣的表示恢復為ccccc。本題需要你根據壓縮或解壓的...

C 壓縮 解壓字串

呼叫壓縮方法 string compstr abcdefg var rawstr getstringbydataset compstr region 壓縮 根據dataset壓縮字串 public static string getstringbydataset string ds 將傳入字串以gz...