Liens Sujet : https://pintia.cn/problem-sets/994805260223102976/problems/994805262018265088
Description Titre
compression texte Il y a plusieurs façons, ici nous ne considérons que le plus simple de type: un segments discrets avec les mêmes caractères et le nombre de caractères de ce fragment contenant le caractère représenté. CCCCC représenté par, par exemple, à 5c. Si le personnage ne se répète pas, il est sorti. Par exemple après la compression est encore aba aba.
Procédé de décompression est, à son tour, 5c tel que la reprise de forme est exprimé ccccc.
Votre demande que le besoin de compression ou décompression, pour une chaîne donnée pour le traitement. Ici, nous supposons simplement que la chaîne d'origine est une chaîne non vide entièrement de lettres anglaises et des espaces.
Entrée
si D est représenté par la chaîne suivante pour être décompressées; entrée de la première ligne d'un caractère donné, si C est représentée pour être comprimé par les besoins de chaîne suivantes. La deuxième ligne donne pas besoin chaîne compressée ou décompressée de 1000 caractères, avec un retour chariot à la fin. Le nombre de caractères répétés dans le titre afin de garantir que l'ensemble des entiers, et le fichier de sortie ne sont pas moins de 1Mo.
Sortie
compression de la chaîne de requête ou de décompression, et délivre en sortie le résultat sur une ligne.
entrée échantillon
C
TTTTThhiiiis de COMME tesssst la CAAAA
Exemple de sortie
5T2h4is i5 a3 te4st AC3a que
code
#include <iostream>
#include <string>
using namespace std;
int main() {
string str;
char c;
scanf("%c", &c);
getchar();
getline(cin, str);
int len = str.size();
int num;
if(c == 'C') {
num = 1;
char pre = str[0];
for(int i = 1; i <= len; i++) {
if(str[i] != pre) {
if(num > 1)
printf("%d", num);
printf("%c", str[i - 1]);
num = 1;
pre = str[i];
}
else
num++;
}
}
if(c == 'D') {
num = 0;
for(int i = 0; i < len; i++) {
while(str[i] >= '0' && str[i] <= '9') {
num = num * 10 + str[i] - '0';
i++;
}
if(num)
while(num--)
printf("%c", str[i]);
else
printf("%c", str[i]);
num = 0;
}
}
return 0;
}