给你一个字符串 s
,请你反转字符串中 单词 的顺序。
单词 是由非空格字符组成的字符串。s
中使用至少一个空格将字符串中的 单词 分隔开。
返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。
注意:输入字符串 s
中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。
class Solution:
def reverseWords(self, s: str) -> str:
def reverse(s):
for i in range(len(s)//2):
tmp = s[i]
s[i] = s[len(s) - 1 - i]
s[len(s) - 1 - i] = tmp
return s
left = 0
right = 0
s = list(s)
while right < len(s):
if s[right] != ' ':
if left != 0:
s[left] = ' '
left += 1
while right < len(s) and s[right] != ' ':
s[left] = s[right]
left += 1
right += 1
else:
right += 1
s = s[:left]
s = reverse(s)
tmp = 0
for i in range(len(s)):
if s[i] == ' ':
s[tmp:i] = reverse(s[tmp:i])
tmp = i + 1
s[tmp:len(s)] = reverse(s[tmp:len(s)])
s = ''.join(s)
return s