📅  最后修改于: 2023-12-03 15:12:42.040000             🧑  作者: Mango
给定一个字符串s,实现一个函数reverseWords(),将字符串s中的单词反转过来,同时保留单词之间的空格。
def reverseWords(s: str) -> str:
pass
输入: "the sky is blue"
输出: "blue is sky the"
输入: " hello world! "
输出: "world! hello"
解释: 输入字符串可以在前面或后面包含多余的空格,但是反转后的单词之间只能包含一个空格。
该题可以分解为以下两个步骤:
首先,去掉字符串s前后的空格,并将字符串s以空格为分隔符,分割为单词列表words。
然后,将单词列表words反转,并将各个单词之间加上一个空格,得到最终的字符串。
这里我们可以利用Python内置的字符串方法直接实现。先通过字符串的split()方法,将字符串分割为单词列表,然后通过切片操作[::-1]反转列表,最后调用join()方法将单词列表拼接为字符串即可。
代码实现如下:
def reverseWords(s: str) -> str:
# 去掉前后空格,将字符串按空格分隔为单词列表
words = s.strip().split()
# 反转单词列表
words = words[::-1]
# 将单词列表中各个单词之间加上空格,拼接为字符串
return " ".join(words)
该算法的时间复杂度为O(n),其中n为字符串s的长度。具体来说,该算法需要进行字符串分割、列表反转和字符串拼接三个步骤,而这三个步骤的时间复杂度均为O(n)。因此,总时间复杂度为O(n)。
该算法的空间复杂度为O(n),其中n为字符串s的长度。具体来说,在进行字符串分割之后,需要创建一个单词列表words,该列表需要占用O(n)的空间。因此,总空间复杂度为O(n)。
本题利用Python自带的字符串方法实现,算法简单高效。同时,要注意处理多余的空格,以及反转后各个单词之间只能包含一个空格的情况。