Skip to main content

151.翻转字符串里的单词

标签: string

难度: Medium

通过率: 48.33%

原题链接: https://leetcode.com/problems/reverse-words-in-a-string/description/

题目描述

给定一个输入字符串 s,翻转其中单词的顺序。一个单词是由非空格字符组成的序列,单词间用至少一个空格分隔。返回一个单空格分隔单词的字符串,并去掉多余的空格。注意:s中可能会有前导或尾随空格,或者在两个单词之间有多个空格。返回的字符串中应该只有一个空格分隔单词,不包含任何多余的空格。

解题思路

我们可以通过以下步骤来解决这个问题:

  1. 先删除字符串开头和结尾的空格。
  2. 使用 split 方法将字符串拆分为单词列表。split 方法会自动去掉多余的空格。
  3. 颠倒单词列表的顺序。
  4. 使用 join 方法将单词列表重新连接成一个以单空格分隔的字符串。

这样就能实现单词顺序的翻转,并且去掉多余的空格。

代码实现

def reverseWords(s):
# 移除开头和结尾的空格,并用空格拆分字符串成单词列表
words = s.strip().split()
# 颠倒列表中的单词顺序
words.reverse()
# 用单个空格连接单词列表
return ' '.join(words)

复杂度分析

时间复杂度:O(n)O(n),其中 nn 是字符串的长度,因为我们需要遍历整个字符串。

空间复杂度:O(n)O(n),用于存储去掉多余空格的单词列表。