Implemente as seguintes funções retiradas de enunciados de exames.

3.3 char * strpack(char *s)

Recebe uma string e compacta num único caractere qualquer conjunto de caracteres repetidos consecutivos.

strpack (“Arrecadddaccao”) “Arecadacao”

strpack (“ AAAaaaBBB CCCIALFFA”) “ AaB CIALFA”

Passo 1

Beleza, essa aqui vai exigir um conceito importante. Se liga, precisamos comparar cada caractere com seu antecessor e, se forem iguais, devemos retirar um deles. Olha como vamos fazer isso:

Começamos criando duas variáveis, i e j e abrimos um laço for para percorrer a string. Perceba que, como definimos j = i – 1, o caractere na posição j sempre vai ser o imediatamente atrás do na posição i. Assim, sempre que encontramos dois caracteres consecutivos iguais, não entramos naquela condição if (linha 9), ou seja, i vai incrementar, enquanto j permanece estático. Agora, quando os caracteres forem diferentes, vamos somar 1 ao valor de j e salvar ali o caractere encontrado no índice i. Efetivamente excluímos o caractere repetido e chegamos o resto dos caracteres pro lado.

Resposta

Ei, a resposta está no passo a passo :)