思路

  • python利用split函数分隔单词成列表,倒置列表后改变大小写,最终串成一个最终的字符串
  • 双指针来取单词前后位置

方法一:借助list

用split函数分隔成单词列表,倒置的方法很好写
图片说明

class Solution:
    def trans(self, s, n):
        # write code here
        l = s.split(' ')                    # 将原字符串按照空格分隔成list
        l = l[::-1]                         # 翻转list内的所有单词
        s = ""
        for letter in l:
            letter = letter.swapcase()      # 调整大小写
            s += letter                     # 重新串成一个字符串
            s += ' '
        return s[0:len(s)-1]                # 最终返回时去掉最后一个空格

复杂度分析

  • 时间复杂度:O(n),需要花时间遍历原来的结构
  • 空间复杂度:O(n),采取list结构存储了原字符串并进行操作

方法二:双指针

控制单词的前后位置,逆序取出单词,并修改大小写

class Solution:
    def trans(self, s, n):
        # write code here
        r = n
        res = ""
        for l in range(n-1, -1, -1):            # 从右往左遍历字符串,用l确定左边界 
            if s[l] == ' ':                     # 当确定到空格位置时,确定左边界
                res += s[l+1:r] + ' '           # 截取单词部分
                r = l                           # 卡住右边界
        for l in range(r):
            res += s[l]                         # 处理最左侧非空格的情况
        return res.swapcase()                   # 改变大小写

复杂度分析

  • 时间复杂度:O(n),访问整个字符串时间
  • 空间复杂度:O(n),返回字符串申请的额外空间