PAT- 字符串压缩与解压
程序员文章站
2024-03-15 16:18:48
...
https://pintia.cn/problem-sets/994805260223102976/problems/994805262018265088
#include<iostream>
using namespace std;
int main()
{
char n;
scanf("%c",&n);
getchar(); //读掉回车
string s;
getline(cin,s);
int count,i;
if (n=='C') { //压缩
count=1;
for (i=0; i<s.length(); i++) {
if (s[i]==s[i+1]) { //当前字符跟后面的一样
count++;
} else {
if (count>1) //大于1需要加数字
printf("%d",count);
printf("%c",s[i]);
count=1;
}
}
} else if (n=='D') { //解压
for (i=0; i<s.length(); i++) {
if (s[i]>='0' && s[i]<='9') { //如果当前是数字
if (s[i+1]>='0' && s[i+1]<='9') { //下一个还是数字
count = count*10+s[i]-'0';
continue; //转到下一个字符位置
} else {
count = count*10+s[i++]-'0';
}
}
count= count==0?1:count; //count是0的话就赋值1
while(count>0) {
printf("%c",s[i]);
count--;
} //最后count一定会变为0
}
}
return 0;
}
上一篇: DS××× HUAWEI 随笔
下一篇: 华为笔试:字符串合并处理