Longueur du Dernier Mot en Python : Résoudre une Question d’Entretien
Introduction
Dans le monde du développement informatique, les questions d’entretien techniques jouent un rôle crucial pour évaluer les compétences d’un candidat. Une question fréquemment posée est celle de déterminer la longueur du dernier mot d’une phrase donnée. Cela pourrait sembler trivial à première vue, mais elle permet de tester non seulement la compréhension des chaînes de caractères en Python mais aussi la capacité à gérer différentes situations et exceptions dans les données d’entrée. L’objectif de cet article est d’explorer diverses solutions efficaces en Python pour aborder ce problème.
Compréhension du Problème
Définition du problème
Avant de plonger dans les solutions, il est essentiel de bien comprendre la question. Un « mot » dans une phrase est généralement défini comme une suite ininterrompue de caractères séparée par des espaces. Par exemple, dans la phrase » Bonjour le monde « , le dernier mot est « monde ».
Exemples de phrases à analyser :
– « Bonjour le monde » – Le dernier mot est « monde », de longueur 5.
– « Python » – Le dernier mot est « Python », de longueur 6.
– » » – Pas de mots présents.
– « »
Points de vigilance
Il est important de noter deux aspects clés :
1. Gestion des espaces : Les espaces en début et fin de phrase doivent être ignorés.
2. Absence de mots : Une chaîne vide ou avec uniquement des espaces ne contient pas de mot.
Approche de Base
1. Méthode Simple avec la Fonction split()
La méthode la plus intuitive pour trouver la longueur du dernier mot consiste à utiliser la fonction split()
de Python qui divise une chaîne en une liste de mots.
def longueur_dernier_mot(phrase):
mots = phrase.split()
if mots:
return len(mots[-1])
return 0
# Exemple d'utilisation
phrase = " Bonjour le monde "
print(longueur_dernier_mot(phrase)) # Sortie : 5
Explication :
– split()
divise la phrase en utilisant les espaces comme délimiteurs.
– mots[-1]
donne le dernier élément de la liste, soit le dernier mot.
– Nous vérifions si la liste n’est pas vide pour éviter les erreurs.
Complexité :
– Temps : O(n), où n est la longueur de la phrase.
– Espace : O(m), où m est le nombre de mots.
2. Gestion des Cas Particuliers
Pour les phrases vides ou celles composées uniquement d’espaces, la fonction ci-dessus retourne 0
, car la liste résultante de split()
sera vide.
# Cas particulier
phrase_vide = " "
print(longueur_dernier_mot(phrase_vide)) # Sortie : 0
Approches Avancées
1. Solution à Base de Boucles
Une autre approche consiste à parcourir la phrase à l’envers pour identifier le dernier mot sans utiliser split()
.
def longueur_dernier_mot_boucle(phrase):
i = len(phrase) - 1
# Ignorer les espaces en fin de chaîne
while i >= 0 and phrase[i] == ' ':
i -= 1
# Calculer la longueur du dernier mot
longueur = 0
while i >= 0 and phrase[i] != ' ':
longueur += 1
i -= 1
return longueur
# Exemple d'utilisation
print(longueur_dernier_mot_boucle(" Bonjour le monde ")) # Sortie : 5
Discussion sur la performance :
– Cette méthode est potentiellement plus efficace en termes d’espace car elle ne crée pas de liste intermédiaire.
2. Utilisation de Regex pour Détection de Mot
Les expressions régulières (regex) sont puissantes pour manipuler des chaînes de caractères. Nous pouvons utiliser la bibliothèque re
de Python pour extraire des mots.
import re
def longueur_dernier_mot_regex(phrase):
mots = re.findall(r'\b\w+\b', phrase)
if mots:
return len(mots[-1])
return 0
# Exemple d'utilisation
print(longueur_dernier_mot_regex(" Bonjour le monde ")) # Sortie : 5
Comparaison avec la méthode split()
:
– re.findall
permet une flexibilité accrue dans la détection de mots.
– Peut être moins performant que split()
en fonction du nombre de motifs à traiter.
Comparaison des Méthodes
Méthode | Complexité Temps | Complexité Espace | Avantages | Inconvénients |
---|---|---|---|---|
split() |
O(n) | O(m) | Simple et rapide à écrire et à comprendre | Moins performant avec de grandes phrases |
Boucle inversée | O(n) | O(1) | Moins d’utilisation de mémoire | Plus complexe à mettre en œuvre pour certains |
Regex | Dépend des motifs | O(m) | Très puissant et flexible | Moins performant, syntaxe complexe pour les débutants |
Conseils pour les Entretiens Techniques
- Clarté et lisibilité du code : Écrivez un code propre et bien commenté, même sous la pression d’un entretien.
- Expliquer sa logique : Parlez à haute voix pendant que vous décomposez le problème pour montrer votre processus de pensée.
- Questions bonus : Soyez prêt à discuter des limites de votre solution ou à envisager des améliorations possibles ou des extensions.
Conclusion
Cet article a abordé différentes méthodes pour résoudre la question de la longueur du dernier mot d’une phrase en Python, allant de l’utilisation simple de split()
à des techniques plus avancées avec boucle et regex. Une approche professionnelle et méthodique est essentielle pour aborder efficacement les questions d’entretien et améliorer sa performance.
Ressources Supplémentaires
- Articles sur les questions d’entretien en Python
- Livres recommandés : « Cracking the Coding Interview » de Gayle Laakmann McDowell
- Ressources en ligne : LeetCode, HackerRank pour s’entraîner à coder
En apprenant ces techniques et en pratiquant régulièrement, vous pourrez aborder les entretiens techniques avec plus de confiance et de compétence.