021-力扣刷题151--翻转字符串里的单词

给定一个字符串,逐个翻转字符串中的每个单词。

示例 1:

输入: "the sky is blue" 输出: "blue is sky the" 示例 2:

输入: "  hello world!  " 输出: "world! hello" 解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。 示例 3:

输入: "a good   example" 输出: "example good a" 解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。

说明:

无空格字符构成一个单词。 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。

进阶:

请选用 C 语言的用户尝试使用 O(1) 额外空间复杂度的原地解法。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
class Solution(object):
    def reverseWords(self, s):
        """
        :type s: str
        :rtype: str
        """
        if s == "": #什么也没有就直接输出s
            return s
        ls = s.split()   #分割字符串成一个个的单词列表
        # print(ls)
        if ls == []:
            return ""
        result = ""
        for i in range(0,len(ls)-1):  #这里循环添加的时候是从最后面添加到倒数第二个,原因是我们要添加" ",因此倒数第一个最后的时候直接进行append就好了
            result += ls[len(ls)-1-i] + " " #len(ls)-1是列表的最后一个索引
        result += ls[0]
        return result