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)。