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) # 拼接

解法三

思路

题解

启发和联系