Informatică, întrebare adresată de dariusaxl, 9 ani în urmă

Fie x,y doua siruri de caractere. Scrieti un program recursiv care sa testeze daca sirul y este o anagrama a lui x.
exemple: sirurile 'abcd' si 'dabc' sunt anagrame.

Răspunsuri la întrebare

Răspuns de CRG
1
int anagrame(char sir1[], char sir2[]) {
    if(strlen(sir1) == 0)
        return strlen(sir2) == 0;
    char copieSir1[100], copieSir2[100];
    strcpy(copieSir1, sir1);
    strcpy(copieSir2, sir2);

    char primCaracter = sir1[0];
    // eliminam primul caracter din copieSir1
    strcpy(copieSir1, copieSir1 + 1);

    // cautam primCaracter in copieSir2
    int gasit = 0, poz = 0, lungimeSir2 = strlen(copieSir2);
    for(poz = 0; poz < lungimeSir2; poz++)
        if(copieSir2[poz] == primCaracter) {
            gasit = 1;
            break;
        }

    if(gasit == 0)
        return 0;

    strcpy(copieSir2 + poz, copieSir2 + poz + 1);
    return anagrame(copieSir1, copieSir2);
}
Alte întrebări interesante