Question
Given an input string , reverse the string word by word.
Example:
Input: ["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"]
Note:
- A word is defined as a sequence of non-space characters.
- The input string does not contain leading or trailing spaces.
- The words are always separated by a single space.
Follow up: Could you do it in-place without allocating extra space?
Solution
Reverse the entire string, and then reverse word by word.
class Solution(object):
def reverseWords(self, str):
"""
:type str: List[str]
:rtype: void Do not return anything, modify str in-place instead.
"""
str.reverse()
left, right = 0, 0
while left < len(str):
space = left + 1
while space < len(str) and str[space] != ' ':
space += 1
right = space - 1
while right > left:
str[left], str[right] = str[right], str[left]
left += 1
right -= 1
left = space + 1