Programação Imperativa

100 Questões Fichas Testes/Exames

Questão 16: difConsecutivos

Voltar

Defina uma função int dif Consecutivos (char s[]) que, dada uma string s calcula o comprimento da maior sub-string com caracteres diferentes.

Exemplo

> difConsecutivos("Programacao")
(int) 5 // correspondente a "ogram"

Resolução

int not_in_prev(char s[], int n) {
    int i;
    for(i = 0; i < n; i++) {
        if(s[i] == s[n]) {
            return 0;
        }
    }
    return 1;
}

int difConsecutivos(char s[]) {
    int consec, difs = 0;
    size_t i, j;
    for(i = 0; s[i]; i++) {
        for(j = 0, consec = 0; s[i+j] && not_in_prev(s+i,j); j++, consec++);
        if (consec > difs) difs = consec;
    }
    return difs;
}