解题思路
双端队列
算法过程:
- 创建
left
,right
指针,分别指向字符串的头和尾,然后字符串两边的空格符给去除 - 然后再创建一个双端队列
d
, 用于存储最终结果。再创建个栈stack
用于存储单词,当遇到空格符后将stack
中的单词放入队列d
的开头 - 最后将
d
中的字符串拼接成字符串即可
代码
class Solution:
def reverseWords(self, s: str) -> str:
left, right = 0, len(s) - 1
while left <= right and s[left] == " ":
left += 1
while left <= right and s[right] == " ":
right -= 1
d, stack = collections.deque(), []
while left <= right:
if s[left] == " " and stack:
d.appendleft(''.join(stack))
stack = []
elif s[left] != ' ':
stack.append(s[left])
left += 1
d.appendleft(''.join(stack))
return ' '.join(d)