557. Reverse Words in a String III

557. Reverse Words in a String III

這一題如果掌握了 151. Reverse Words in a String的核心,只需要修改一小部分的邏輯就可以了。

class Solution:
    def reverseWords(self, s: str) -> str:
        holder = []
        
        slow = 0
        fast = 0
        
        while fast < len(s):
            if s[fast] != " ":
                fast += 1
            else:
                if fast == slow:
                    fast += 1
                    slow += 1
                else:
                    holder.append(s[slow:fast][::-1])
                    fast += 1
                    slow = fast
                    
        if fast != slow:
            holder.append(s[slow:fast][::-1])
        return " ".join(holder)
class Solution:
    def reverseWords(self, s: str) -> str:
        
        s = [c for c in s]
        def reverse(left, right):
            while left < right:
                s[left], s[right] = s[right], s[left]
                left += 1
                right -= 1
        

        slow = 0
        fast = 0

        while fast < len(s):
            if s[fast] == " ":
                reverse(slow, fast - 1)
                slow = fast
                slow += 1
            fast += 1

        reverse(slow, fast - 1)
        
        return ''.join(s)