当前位置:实例文章 » C#开发实例» [文章]LeetCode //151. Reverse Words in a String

LeetCode //151. Reverse Words in a String

发布人:shili8 发布时间:2025-02-14 12:33 阅读次数:0

**反转字符串中的单词**

给定一个只包含空格和小写字母的字符串 `s`,反转该字符串中每个单词的顺序。

**示例1:**

输入: `"hello world" `
输出: `"world hello"`

**示例2:**

输入: `"a good example" `
输出: `"example good a"`

**示例3:**

输入: `" hello world! " `
输出: `"world! hello"`

**解决方案**

我们可以使用栈来实现这个功能。首先,我们需要将每个单词压入栈中,然后再反转栈中的元素。

class Solution:
 def reverseWords(self, s: str) -> str:
 # 去除字符串两端的空格 s = s.strip()
 # 将单词分割成列表 words = s.split(' ')
 # 反转列表中的元素 words.reverse()
 # 将反转后的列表连接成字符串 result = ' '.join(words)
 return result


**注释**

* `strip()` 方法用于去除字符串两端的空格。
* `split(' ')` 方法将字符串分割成列表,每个元素为单词。
* `reverse()` 方法反转列表中的元素。
* `' '.join(words)` 将列表连接成字符串。

**测试**

solution = Solution()
print(solution.reverseWords("hello world")) # Output: "world hello"
print(solution.reverseWords("a good example")) # Output: "example good a"
print(solution.reverseWords(" hello world! ")) # Output: "world! hello"


**时间复杂度**

* `strip()` 方法的时间复杂度为 O(n),其中 n 为字符串长度。
* `split(' ')` 方法的时间复杂度为 O(n)。
* `reverse()` 方法的时间复杂度为 O(n)。
* `' '.join(words)` 方法的时间复杂度为 O(n)。

因此,总时间复杂度为 O(n) + O(n) + O(n) + O(n) = O(4n) = O(n)。

**空间复杂度**

* `strip()` 方法不占用额外空间。
* `split(' ')` 方法占用 O(n) 个额外空间。
* `reverse()` 方法不占用额外空间。
* `' '.join(words)` 方法占用 O(n) 个额外空间。

因此,总空间复杂度为 O(n) + O(n) = O(2n) = O(n)。

其他信息

其他资源

Top