要求
给定一个字符串,逐个翻转字符串中的每个单词。
示例:
输入: ["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.
"""
s[:] = list(" ".join("".join(s).split(" ")[::-1]))
另一解法
class Solution:
def reverseWords(self, s: List[str]) -> None:
"""
Do not return anything, modify s in-place instead.
"""
l = len(s)
if not l:
return
def reverse(start,end):
left,right = start,end
while left < right:
s[left],s[right] = s[right],s[left]
left += 1
right -= 1
reverse(0,l-1)
first_char_index = 0
for i,x in enumerate(s):
if x == " ":
reverse(first_char_index, i - 1)
first_char_index = i + 1
reverse(first_char_index,l - 1)
解题思路:第一种解法:我们使用python原有的库和方法完成反转,比较简单;第二种解法:就是我们自己写一个反转函数,不断的调用,将我们的每个单词都进行反转,比较简单。