PAT-B 1078 字串壓縮與解壓【字串】
PAT-B 1078 字串壓縮與解壓
https://pintia.cn/problem-sets/994805260223102976/problems/994805262018265088
題目
文字壓縮有很多種方法,這裡我們只考慮最簡單的一種:把由相同字元組成的一個連續的片段用這個字元和片段中含有這個字元的個數來表示。例如 ccccc
就用 5c
來表示。如果字元沒有重複,就原樣輸出。例如 aba
壓縮後仍然是 aba
。解壓方法就是反過來,把形如 5c
這樣的表示恢復為 ccccc
。本題需要你根據壓縮或解壓的要求,對給定字串進行處理。這裡我們簡單地假設原始字串是完全由英文字母和空格組成的非空字串。
輸入
輸入第一行給出一個字元,如果是 C
就表示下面的字串需要被壓縮;如果是 D
就表示下面的字串需要被解壓。第二行給出需要被壓縮或解壓的不超過 1000 個字元的字串,以回車結尾。題目保證字元重複個數在整型範圍內,且輸出檔案不超過 1MB。
輸出
根據要求壓縮或解壓字串,並在一行中輸出結果。
樣例輸入
C
TTTTThhiiiis isssss a tesssst CAaaa as
樣例輸出
5T2h4is i5s a3 te4st CA3a as
分析
簡單字串處理,具體看程式。
C++程式
#include<iostream>
#include<ctype.h>
#include<string>
using namespace std;
int main()
{
char c;
string s;
cin>>c;
getchar();//讀取回車
getline(cin,s);
if(c=='C')//壓縮
{
for(int i=0;i<s.length();)
{
int num=0;
char ch=s[i];//計算有多少字元與ch一樣
while(i<s.length()&&ch==s[i]) i++,num++;
if(num>1) cout<<num;//數量大於1才輸出
cout<<ch;
}
}
else//解壓
{
for(int i=0;i<s.length();)
{
if(isdigit(s[i]))//s[i]是數字
{
int j=i;
while(i<s.length()&&isdigit(s[i])) i++;
//計算數字的值
int num=0;
for(;j<i;j++)
num=num*10+s[j]-'0';
for(int k=1;k<=num;k++)
cout<<s[i]; //輸出被壓縮的字元
i++;//i+1為下次做準備
}
else
{
cout<<s[i];
i++;//i+1為下次做準備
}
}
}
return 0;
}
相關文章
- PAT1078字串壓縮與解壓(java實現)字串Java
- 字串壓縮(一)之ZSTD字串
- 第五章 字串專題 ---------------- 5.5 題解:壓縮字串字串
- 壓縮字串《演算法很美》字串演算法
- 8-字串的壓縮儲存字串
- 字串壓縮(二)之LZ4字串
- Linux tar分卷壓縮與解壓縮Linux
- Linux 常用的壓縮與解壓縮命令詳解Linux
- 【leetcode 簡單】 第一百零六題 壓縮字串LeetCode字串
- 藍橋杯 演算法提高 字串壓縮演算法字串
- Linux壓縮解壓Linux
- CentOS 壓縮解壓CentOS
- linux下壓縮解壓縮命令Linux
- Linux下檔案的壓縮與解壓Linux
- linux 下壓縮與解壓資料夾Linux
- linuxtar解壓和壓縮Linux
- linux分卷壓縮解壓Linux
- Linux科研武器庫 - 檔案壓縮與解壓縮 - zip / unzipLinux
- NET中SharpZipLib 的使用(一)【壓縮與解壓】
- 分卷壓縮怎麼解壓 快速解壓電腦分卷壓縮檔案方法
- linux 高效壓縮工具之xz的壓縮解壓使用Linux
- Linux打包壓縮解壓工具Linux
- .NET 壓縮/解壓檔案
- Keka for Mac(壓縮解壓工具)Mac
- Keka for Mac壓縮解壓工具Mac
- MyZip for mac解壓壓縮工具Mac
- Nginx R31 doc-11-Compression and Decompression 壓縮與解壓縮Nginx
- 用ASP實現線上壓縮與解壓縮功能程式碼
- Linux常用命令之檔案壓縮與解壓縮命令詳解Linux
- Linux下的tar壓縮解壓縮命令詳解Linux
- C++ MiniZip實現目錄壓縮與解壓C++
- Nginx網路壓縮 CSS壓縮 圖片壓縮 JSON壓縮NginxCSSJSON
- Mac壓縮解壓工具:Keka for MacMac
- A-Zippr for Mac 壓縮解壓工具Mac
- linux下壓縮、解壓命令大全Linux
- CentOS中zip壓縮和unzip解壓縮命令詳解CentOS
- NET中SharpZipLib 的使用(二)【Web中壓縮與解壓】Web
- Cnetos7系統---檔案壓縮與解壓命令詳解。