双指针
class Solution:
def reverseWords(self, s: str) -> str:
s = s.strip()
i = j = len(s) - 1
res = []
while i >= 0:
while i >= 0 and s[i] != ' ': i -= 1
res.append(s[i+1:j+1])
while s[i] == ' ': i -= 1
j = i
return ' '.join(res)
时间复杂度 O(N): 线性遍历字符串。
空间复杂度 O(N)O(N) : 新建的 list(Python) 中的字符串总长度 ≤N ,占用 O(N)大小的额外空间。
分割 + 倒序
面试时不建议直接调split 列表倒序啥的内置函数,简单实现是没啥毛病,笔试可以这的写,so quick !
PS:s.split(" ")解决不了单词间多空格的问题,s.split()可以解决
class Solution:
def reverseWords(self, s: str) -> str:
s = s.strip()
strs = s.split()
strs.reverse()
return ' '.join(strs)
class Solution:
def reverseWords(self, s: str) -> str:
return ' '.join(s.strip().split()[::-1])
时间空间复杂度都O(N)