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.

results matching ""

    No results matching ""