PHP auf LeetCode: Ein unerwarteter, aber mächtiger Verbündeter bei der Vorbereitung auf Vorstellungsgespräche
\n\nWenn man „LeetCode“ hört, denkt man normalerweise an Java, Python oder C++. PHP wirkt in dieser Liste wie ein Außenseiter. Aber wenn Sie in PHP programmieren und wachsen wollen – vom einfachen „Script-Schreiber“ zum Ingenieur, der hochlastige Systeme entwirft – dann müssen Sie unbedingt den Weg über LeetCode in PHP gehen.
\n\nWarum? Weil es bei LeetCode nicht um Syntax geht. Es geht um algorithmisches Denken. Und PHP gibt Ihnen, bei all seiner Webspezifik, genau dieselben Werkzeuge für die Arbeit mit Arrays, Strings, Bäumen und Graphen. Nur mit einer etwas anderen Syntax und einigen „Fallstricken“.
\n\nIn diesem Artikel werden wir uns ansehen, welche Themen Sie auffrischen müssen, wie Sie effizienten PHP-Code für LeetCode schreiben, und zeigen echte Lösungsbeispiele. Los geht's!
\n\nWarum braucht ein PHP-Entwickler LeetCode?
\n\nViele denken: „Ich bin Backend-Entwickler in PHP, mir reichen Laravel und SQL.“ Das ist eine Falle. In Vorstellungsgesprächen bei großen Unternehmen (und nicht nur dort) bekommen Sie eine Aufgabe zur binären Suche oder dynamischen Programmierung. Und wenn Sie solche Aufgaben nicht in PHP lösen können, werden Sie nicht eingestellt, selbst wenn Sie ein Symfony-Guru sind.
\n\nLeetCode trainiert:
\n- \n
- Die Fähigkeit, die Komplexität von Algorithmen zu analysieren (Big O). Ohne dies können Sie keine Abfragen optimieren oder effiziente Warteschlangen schreiben. \n
- Die Arbeit mit ungewöhnlichen Datenstrukturen – Stapel, Warteschlangen, Hashtabellen, Bäume. In PHP sind sie nicht so offensichtlich wie in Java. \n
- Code-Sauberkeit – Sie lernen, kurze, verständliche Funktionen ohne unnötige Krücken zu schreiben. \n
Und ja, PHP auf LeetCode ist kein Verweis auf die Dokumentation. Es ist eine vollwertige Sprache für Lösungen. Die Hauptsache ist, ihre Besonderheiten zu kennen.
\n\nWas sollte man vor dem Start lernen?
\n\n1. Arrays – das Hauptwerkzeug von PHP
\nPHP hat keine klassischen Listen oder Hashtabellen – all das sind Arrays. Sie können sowohl indiziert als auch assoziativ sein. Das ist mächtig, aber auch gefährlich: Man kann versehentlich Schlüsseltypen mischen.
\n\nWichtig:
\n- \n
array_map(),array_filter(),array_reduce()– Ihre besten Freunde. \n - Sortierung:
sort(),asort(),ksort(). Denken Sie daran, dasssort()die Schlüssel zurücksetzt. \n - Prüfung auf Schlüsselexistenz:
isset()undarray_key_exists()sind nicht dasselbe. \n
2. Strings und reguläre Ausdrücke
\nPHP ist bekannt für seine String-Funktionen. Auf LeetCode gibt es oft Aufgaben zu Palindromen, Anagrammen, Zeichenzählung. Verwenden Sie str_split(), count_chars(), preg_match() (aber übertreiben Sie es nicht – im Vorstellungsgespräch könnte man Sie bitten, ohne reguläre Ausdrücke zu arbeiten).
3. Rekursion und Stapel
\nPHP hat keinen eingebauten Stapel (SplStack gibt es, wird aber selten verwendet). Meistens wird ein Stapel mit einem Array und array_push() und array_pop() emuliert. Rekursion funktioniert auch, aber achten Sie auf die Tiefe – standardmäßig liegt das Limit bei 256 Aufrufen.
4. Klassen und Objekte
\nLeetCode gibt oft Aufgaben, bei denen eine Klasse implementiert werden muss (Stapel, Warteschlange, LRU-Cache). In PHP erfolgt dies über Klassen mit private/protected Eigenschaften. Vergessen Sie nicht __construct() und die Typisierung.
Typische Aufgaben auf LeetCode für PHP
\n\nLassen Sie uns drei beliebte Aufgaben durchgehen – von einfach bis mittelschwer. Der Code ist in PHP, mit Erklärungen.
\n\nAufgabe 1: Two Sum (Einfach)
\nBedingung: Gegeben ist ein Array von Zahlen und eine Zielsumme. Finden Sie die Indizes der beiden Zahlen, die in der Summe das target ergeben.
\n\nLösung mit einer Hashtabelle (assoziatives Array):
\n\nfunction twoSum(array $nums, int $target): array {\n $map = []; // Schlüssel – Zahl, Wert – Index\n \n foreach ($nums as $i => $