186. Reverse Words in a String II
Given an input string, reverse the string word by word. A word is defined as a sequence of non-space characters.
The input string does not contain leading or trailing spaces and the words are always separated by a single space.
For example,
Given s = "the sky is blue",
return "blue is sky the".
Could you do it in-place without allocating extra space?
Solution: Two Pointers
class Solution:
def reverseWords(self, chars):
"""
:type chars: List[str]
:rtype void
"""
slow = 0
chars.append(' ')
for fast, char in enumerate(chars):
if char == ' ':
chars[slow: fast] = reversed(chars[slow: fast])
slow = fast + 1
chars.pop()
chars.reverse()
Lessons:
- Double reverse.