PHP sur LeetCode : un allié inattendu mais puissant pour la préparation aux entretiens
\n\nQuand on entend « LeetCode », on pense généralement à Java, Python ou C++. PHP dans cette liste semble être un outsider. Mais si vous codez en PHP et souhaitez évoluer — du simple « scripteur » à l'ingénieur qui conçoit des systèmes à forte charge — vous devez absolument passer par LeetCode en PHP.
\n\nPourquoi ? Parce que LeetCode ne concerne pas la syntaxe. Il s'agit de pensée algorithmique. Et PHP, malgré sa spécificité web, vous offre exactement les mêmes outils pour travailler avec les tableaux, les chaînes, les arbres et les graphes. Juste avec une syntaxe légèrement différente et quelques « pièges ».
\n\nDans cet article, nous allons voir quels sujets vous devez maîtriser, comment écrire du code PHP efficace pour LeetCode, et montrer des exemples concrets de solutions. C'est parti !
\n\nPourquoi un développeur PHP a-t-il besoin de LeetCode ?
\n\nBeaucoup pensent : « Je suis développeur back-end PHP, je n'ai besoin que de connaître Laravel et SQL ». C'est un piège. Lors des entretiens dans les grandes entreprises (et pas seulement), on vous donnera un problème de recherche binaire ou de programmation dynamique. Et si vous ne savez pas résoudre ces problèmes en PHP, vous ne serez pas embauché, même si vous êtes un gourou de Symfony.
\n\nLeetCode entraîne :
\n- \n
- La capacité à analyser la complexité des algorithmes (Big O). Sans cela, vous ne pourrez pas optimiser les requêtes ni écrire des files d'attente efficaces. \n
- Le travail avec des structures de données non standard — piles, files d'attente, tables de hachage, arbres. En PHP, elles ne sont pas aussi évidentes qu'en Java. \n
- La propreté du code — vous apprenez à écrire des fonctions courtes et claires sans béquilles inutiles. \n
Et oui, PHP sur LeetCode n'est pas un renvoi à la documentation. C'est un langage à part entière pour les solutions. L'essentiel est de connaître ses particularités.
\n\nQue faut-il étudier avant de commencer ?
\n\n1. Les tableaux — l'outil principal de PHP
\nPHP n'a pas de listes classiques ni de tables de hachage — tout cela, ce sont des tableaux. Ils peuvent être indexés ou associatifs. C'est puissant, mais aussi dangereux : on peut mélanger accidentellement les types de clés.
\n\nCe qui est important :
\n- \n
array_map(),array_filter(),array_reduce()— vos meilleurs amis. \n - Le tri :
sort(),asort(),ksort(). Rappelez-vous quesort()réinitialise les clés. \n - Vérification de l'existence d'une clé :
isset()etarray_key_exists()ne sont pas la même chose. \n
2. Les chaînes de caractères et les expressions régulières
\nPHP est réputé pour ses fonctions de manipulation de chaînes. Sur LeetCode, on rencontre souvent des problèmes de palindromes, d'anagrammes, de comptage de caractères. Utilisez str_split(), count_chars(), preg_match() (mais sans en abuser — lors d'un entretien, on peut vous demander de le faire sans expressions régulières).
3. La récursivité et la pile
\nPHP n'a pas de pile intégrée (SplStack existe, mais est rarement utilisé). Le plus souvent, on émule une pile avec un tableau utilisant array_push() et array_pop(). La récursivité fonctionne aussi, mais surveillez la profondeur — par défaut, la limite est de 256 appels.
4. Les classes et les objets
\nLeetCode donne souvent des problèmes où il faut implémenter une classe (pile, file d'attente, cache LRU). En PHP, cela se fait avec des classes utilisant des propriétés private/protected. N'oubliez pas __construct() et le typage.
Problèmes typiques sur LeetCode pour PHP
\n\nAnalysons trois problèmes populaires — du facile au moyen. Le code sera en PHP, avec des explications.
\n\nProblème 1 : Two Sum (Facile)
\nÉnoncé : Étant donné un tableau de nombres et une somme cible, trouver les indices des deux nombres dont la somme est égale à la cible.
\n\nSolution avec une table de hachage (tableau associatif) :
\n\nfunction twoSum(array $nums, int $target): array {\n $map = []; // clé — nombre, valeur — indice\n \n foreach ($nums as $i => $