-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path08_rle.c
50 lines (34 loc) · 1.25 KB
/
08_rle.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
Completar la función rle para que devuelva un nuevo char* (reservado
con malloc/calloc/realloc) que contenga una codificación RLE del
string dado. La codificación RLE consiste en contar la cantidad de
veces que se repite un mismo elemento y almacenarlo como
<n>+<elemento>.
Los siguientes son ejemplos de strings con su respectiva
codififación RLE:
"A" -> "1A"
"AA" -> "2A"
"AAA" -> "3A"
"AABCCC" -> "2A1B3C"
"ABBBBDDEEAAAADD" -> "1A4B2D2E4A2D"
Por motivos de legibilidad, vamos a suponer que la cantidad de veces
que se repite un elemento nunca va a ser mayor a 9 y que almacenamos
los numeros con su codigo ASCII (en vez de almacenar 1, almacenamos
'1', etc, de tal forma que pueda mostrarse por pantalla facilmente
con un printf el string codificado completo)
NO está permitido utilizar for/while/do/strlen/memcpy/memmove/strdup/sarasa
Está permitido utilizar una función auxiliar o un parámetro extra.
Puntos extra si no utiliza realloc.
*/
char* rle(const char* s){
}
int main(){
char* texto = "ABBBBDDEEAAAADD";
char* r = rle(texto);
printf("%s -> %s\n", texto, r);
free(r);
return 0;
}