目录

力扣-反转字符串中的单词

🔗 题目链接

给你一个字符串 s,请你反转字符串中单词的顺序。

单词是由非空格字符组成的字符串。s中使用至少一个空格将字符串中的单词分隔开。

返回单词顺序颠倒且单词之间用单个空格连接的结果字符串。

注意:输入字符串 s 中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。

示例 1:
输入s = "the sky is blue"
输出"blue is sky the"
示例 2:
输入:s = " hello world "
输出"world hello"
解释:反转后的字符串中不能存在前导空格和尾随空格。
示例 3:
输入:s = "a good example"
输出"example good a"
解释:如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。

提示

  • $1 <= s.length <= 10^4$
  • s 包含英文大小写字母、数字和空格 ' '
  • s至少存在一个单词

使用语言特性

思路和算法

很多语言对字符串提供了 split拆分reverse翻转join连接 等方法,因此我们可以简单的调用内置的 API 完成操作:1

  1. 使用 split 将字符串按空格分割成字符串数组;
  2. 使用 reverse 将字符串数组进行反转;
  3. 使用 join 方法将字符串数组拼成一个字符串。
/images/split.png
split
1
2
def reverseWords(s: str) -> str:
    return " ".join(reversed(s.split()))

复杂度分析

  • 时间复杂度:$O(n)$,其中 $n$ 为输入字符串的长度。
  • 空间复杂度:$O(n)$,用来存储字符串分割之后的结果。