本文主要是介绍PAT 1078 字符串的压缩与解压,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目链接:请点击
注1 输入有空格所以用getline不能用cin
注2 最开始用scanf("%c\n",&c)在读取字符后直接用scanf来吸收换行错误,如下图所示,可能原因:请点击
AC代码
#include<iostream>
#include<cstring>
#include<cctype>
using namespace std;
int main(){char c;scanf("%c",&c);string str;getchar();//吸收换行getline(cin,str);//读取一行 if(c=='C') {//压缩 for(int i=0;i<str.length();i++){int j=i+1;while(j<str.length()&&str[j]==str[i]) j++;if(j!=i+1){//表明出现了重复字符 cout<<j-i<<str[i];i=j-1;}else cout<<str[i];}} else if(c=='D') {for(int i=0;i<str.length();i++){int j=i,num=0;while(isdigit(str[j])) {//isdigit属于头文件cctype 用于判断是否是数字 num=num*10+(str[j]-'0');j++;}for(int k=0;k<num;k++) cout<<str[j];if(num==0) cout<<str[i];else i=j;}}return 0;
}
这篇关于PAT 1078 字符串的压缩与解压的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!