1078 字串壓縮與解壓 20分

2022-09-01 20:09:06 字數 1444 閱讀 5996

文字壓縮有很多種方法,這裡我們只考慮最簡單的一種:把由相同字元組成的乙個連續的片段用這個字元和片段中含有這個字元的個數來表示。例如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
輸入字串str,壓縮過程是從第乙個元素開始,判斷他的下乙個元素是否與之相同,相同令count++,表示相同字元的數量,如果不同則break輸出,若count == 1,只輸出字元,>1在前面輸出count

解壓過程從第乙個元素開始判斷是否是數字,如果不是數字則直接輸出乙個字元,如果是數字,則計算數字是多少,然後輸出多少次該數字的下乙個字元

注意解壓過程中的數字可能大於10,兩位數字因此遇到數字的時候需要判斷後邊是否也是數字,然後求和才行

#include#includeusing namespace std;

int main()else

}if(count == 1)else

i = j -1;

}break;

case 'd':

//解壓

for(i = 0; i < str.length() ; i ++)//計算數字大小

if(count)

}else cout << str[i];

}break;

}}

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。本題需要你根據壓縮或解壓的...