LC: 186. Reverse Words in a String II
https://leetcode.com/problems/reverse-words-in-a-string-ii/
186. Reverse Words in a String II
Given a character array s, reverse the order of the words.
A word is defined as a sequence of non-space characters. The words in s will be separated by a single space.
Your code must solve the problem in-place, i.e. without allocating extra space.
Example 1:
Input: s = ["t","h","e"," ","s","k","y"," ","i","s"," ","b","l","u","e"]
Output: ["b","l","u","e"," ","i","s"," ","s","k","y"," ","t","h","e"]Example 2:
Input: s = ["a"]
Output: ["a"]Constraints:
1 <= s.length <= 105s[i]is an English letter (uppercase or lowercase), digit, or space' '.There is at least one word in
s.sdoes not contain leading or trailing spaces.All the words in
sare guaranteed to be separated by a single space.
The Essence:
Wenn man die ganze Zeichenfolge umdreht, dreht man auch die Wörter. Um das zu vermeiden, muss man nach der Umdrehung die Wörter wieder umdrehen. Die Wörter sind durch Leerzeichen dazwischen erkennbar. Wie in diesem Fall werden Lösungen manchmal dadurch erreicht, dass man eigentlich neue Probleme schafft und dann ein Weg findet, diese vorübergehenden Probleme zu lösen und sogar zu nutzen.
Details:
Die Lösung lässt sich mit zwei Funktionen reverse(i,j) und reverseEachWord() implementieren. Zunächst werden die gesamte Zeichenfolge umgedreht. Die zweite Funktion findet die Anfang- und Endindizes der Wörter und ruft die reverse(start,end)-Funktion auf, um diese umzudrehen. Eingebaute Methoden der Programmiersprachen können ebenfalls bevorzugt werden.
Solution(s):
Default Code:
Last updated