PAT B1078 Compresión y descompresión de cuerdas (20 puntos)

Inserte la descripción de la imagen aquí
Se puede resolver fácilmente si puede usar contenedores de cuerdas

#include <iostream>
#include <cstdio> 
#include <string>
using namespace std;

int main(){
    
    
	char c;
	scanf("%c", &c);
	getchar();
	
	string s;
	string num = "";
	getline(cin,s);
	if(c == 'C'){
    
    
		for(int i=0; i<s.size()-1;){
    
    
			int num = 1;
			char c = s[i];
			for(int j=i+1; j<s.size(); j++){
    
    
				if(s[j] == c){
    
    
					num++;
					i = j;
				}else{
    
    
					i = j;
					break;
				} 
			}
			if(num == 1){
    
    
				cout << c;
			}else{
    
    
				cout << num << c;
			}
			if(i == s.size()-1){
    
    
				if(num == 1){
    
    
					cout << s[i];
				}
			}
		}
	}else if(c == 'D'){
    
    
		for(int i=0; i<s.size(); i++){
    
    
			if(s[i]>='0' && s[i]<='9'){
    
    
				num += s[i];
			}else{
    
    
				if(num != ""){
    
    
					int a = stoi(num);
					for(int j=0; j<a; j++){
    
    
						cout << s[i];
					}
					num = "";
				}else{
    
    
					cout << s[i];
				}
			}
		}
	}
	
	return 0;
}

Supongo que te gusta

Origin blog.csdn.net/weixin_45964844/article/details/114237058
Recomendado
Clasificación