1078 字串壓縮與解壓 20 分

2021-10-19 17:27:52 字數 1553 閱讀 7545

文字壓縮有很多種方法,這裡我們只考慮最簡單的一種:把由相同字元組成的乙個連續的片段用這個字元和片段中含有這個字元的個數來表示。例如 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
當輸入c的時候,先通過迴圈,然後找到後面與前面不同的字元,如果相同,count++,如果不同,直接輸出count+1的值和當前字元,繼續迴圈即可,注意,當count=0的時候不輸出count,只輸出當前字元

當輸入d的時候,只需找到數字,遇到數字,輸出比當前數字少乙個的所有字元,再輸出當前字元即可,需要注意的是,如果是10這種兩位的數字,需要乙個迴圈找出連續的所有數字,然後輸出,此處與棧的知識類似,字首表示式那裡

字首表示式求值

如果此題不會的可以去看看棧的知識,都是基礎,很重要

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

intmain()

if(count>0)

else}}

else

if(x==

'd')

for(

int j=

1;j<

stoi

(temp)

;j++)}

else}}

return0;

}

1078 字串壓縮與解壓(20 分)

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

1078 字串壓縮與解壓(20 分)

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

1078 字串壓縮與解壓(20 分)

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