PAT 乙級 1078 字串壓縮與解壓 20

2022-03-21 19:40:08 字數 1558 閱讀 7302

文字壓縮有很多種方法,這裡我們只考慮最簡單的一種:把由相同字元組成的乙個連續的片段用這個字元和片段中含有這個字元的個數來表示。例如 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

本文需要注意的是aaa的情況,其他的基本能過

1

: 定義控制台應用程式的入口點。2//

34 #include "

stdafx.h

"5 #include6 #include

7 #include8 #include9

10using

namespace

std;

1112

//將字母的個數置於字串中

13void get_num(int &num,string &str2,const

string &str,int &i)

1424

25while (!s.empty())

263031}

32]);

34 num = 1;35

}3637void

zip()

3852

else

5359}60

61 cout << str2 <6364

bool isdigit(char

c)65

7172

void

unzip()

7388

8990 i = j; //

重新整理i91}92

else

, str[i]);94}

9596 cout << str2 <9899

intmain()

100

PAT 乙級 1078 字串壓縮與解壓

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

PAT乙級1078 字串壓縮與解壓 20

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

PAT乙級1078 字串壓縮與解壓 Cpp

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