-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy path186.翻转字符串里的单词Ⅱ.py
36 lines (33 loc) · 1.11 KB
/
186.翻转字符串里的单词Ⅱ.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 给定一个字符串,逐个翻转字符串中的每个单词。
#
# 示例:
#
# 输入: ["t","h","e"," ","s","k","y"," ","i","s"," ","b","l","u","e"]
# 输出: ["b","l","u","e"," ","i","s"," ","s","k","y"," ","t","h","e"]
# 注意:
#
# 单词的定义是不包含空格的一系列字符
# 输入字符串中不会包含前置或尾随的空格
# 单词与单词之间永远是以单个空格隔开的
# 进阶:使用 O(1) 额外空间复杂度的原地解法。
class Solution:
def reverseWords(self, s: List[str]) -> None:
"""
Do not return anything, modify s in-place instead.
"""
i = 0
for j in range(len(s)): # aT bT c
if s[j] != " ":
continue
self.reverse(s, i, j)
i = j + 1
self.reverse(s, i, len(s)) # aT bT cT
self.reverse(s, 0, len(s)) # c b a
# 定义翻转函数
def reverse(self, s, i, j):
left = i
right = j - 1
while left < right:
s[left], s[right] = s[right], s[left]
left += 1
right -= 1