Une chaîne isogramme [4 scientifique]

Écrivez une fonction est_isogramme(ch: str) qui prend en entrée une chaîne de caractères ch et qui renvoie True si ch est un isogramme (c’est-à-dire s’il n’y a aucune lettre qui se répète), et False sinon.

Contraintes :

  • La chaîne de caractères ch ne contiendra que des lettres minuscules (a à z).
  • La chaîne de caractères ch aura une longueur inconnue.

Indications :

Vous pouvez utiliser un tableau de booléens pour enregistrer les lettres déjà rencontrées et vérifier si la lettre courante a déjà été enregistrée. Si c’est le cas, vous pouvez renvoyer False, sinon vous pouvez enregistrer la lettre courante et continuer à parcourir le texte jusqu’à ce que vous ayez parcouru toutes les lettres. Si vous arrivez à la fin du texte sans avoir rencontré de lettre répétée, vous pouvez renvoyer True.

Afficher la solution

def est_isogramme(ch: str) :
    # Initialisation du tableau de booléens qui enregistre les lettres rencontrées
    letteres = [False] * 26
    # Rep==0, c-à-d aucune lettre ne se répète
    rep=0
    # Parcours de la chaîne de caractères
    for c in ch:
        print(c)
        # Conversion de la lettre en un indice de 0 à 25
        index = ord(c) - ord('a')
        
        # Si la lettre a déjà été rencontrée, on renvoie False
        if letteres[index]:
            rep+=1
        
        # Si la lettre n'a pas encore été rencontrée, on l'enregistre
        letteres[index] = True
    
    # Si toutes les lettres ont été parcourues sans rencontrer de lettre répétée (rep==0), on renvoie True
    return rep==0

Leave a Reply

Your email address will not be published. Required fields are marked *