欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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;
}

PAT- 字符串压缩与解压

相关标签: C语言 PAT