Leetcode Link: 剑指 Offer 58 - I. 翻转单词顺序 - 力扣(LeetCode)
题目

解法一:同向双指针
思路:
题解:
class Solution:
def reverseWords(self, s: str) -> str:
s = s.strip() # 去掉前后的空格
l = r = 0
res = []
while(r < len(s)):
r += 1
if r < len(s) and s[r] == ' ':
res.append(s[l:r])
l = r
while(l<len(s) and s[l] == ' '):
l += 1
r = l
res.append(s[l:r])
res = res[::-1]
return ' '.join(res)解法二:内置函数法
思路:
直接使用内置函数
s.strip() : 去掉字符串 s 前后的空格和回车
s.split(p): 将字符串s以p为界进行分割,返回一个列表,每个元素是一个子串,该子串中不含p
题解:
class Solution:
def reverseWords(self, s: str) -> str:
s = s.strip() # 去掉前后的空格
while(' ' in s): # 去掉相邻的多个空格
s = s.replace(' ', ' ')
lst = s.split(' ') # 以空格切分
lst = lst[::-1] # 逆序
return ' '.join(lst) # 拼接解法三
思路:
题解: