• 如果调用函数,可以很快得到答案,但这应该不是这道题的本意

    class Solution:
      def ReverseSentence(self, s):
          # write code here
          return ' '.join(s.split(' ')[::-1])
  • 标准做法是通过字符串的翻转,首先翻转整个字符串,然后翻转字符串中的每个单词,注意str是不可变的,要把它转成list操作,最后再连接起来

  • 要考虑的情况:

    1. 句子只有一个单词

    2. 字符串内容为空

      class Solution:
      def ReverseSentence(self, s):
         # write code here
         if not s :
             return s 
         lists = self.Reverse(list(s))#翻转整个句子
         begin = 0
         for i in range(len(lists)):
             #翻转每一个单词,当遇到' '时说明上一个单词的字符遍历结束
             if lists[i] == ' ':
                 lists[begin:i] = self.Reverse(lists[begin:i])
                 begin = i + 1
         #翻转最后一个单词
         lists[begin:] = self.Reverse(lists[begin:])
         return ''.join(lists)
      
      def Reverse(self, s):
         if not s:
             return s
         start = 0
         end = len(s) - 1
         while start < end :
             s[start], s[end] = s[end], s[start]
             start += 1
             end -= 1
         return s