151. 反转字符串中的单词 python

给你一个字符串 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
    

你可能感兴趣的:(python,数据结构,leetcode)