原题链接:https://leetcode-cn.com/problems/fan-zhuan-dan-ci-shun-xu-lcof/solution/
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. ",则输出"student. a am I"。
image.png
解题思路:
- 使用
python
的strip()
函数去除首末的空格,split()
分隔字符串为列表,再倒序后输出为字符串; - 双指针,
i、j
均指向末位,从后向前搜索,先用指针i搜索到第一个空格,s[i+1:j+1]
即最后一个单词,存入res
,i指针继续前进,搜索到非空格,再将j指向i,重复以上过程,保存每一个单词。
class Solution:
def reverseWords(self, s: str) -> str:
return ' '.join(s.strip().split()[::-1])
class Solution:
def reverseWords(self, s: str) -> str:
# 双指针
s = s.strip()
i = j = len(s)-1
res = []
while i >= 0:
while i >= 0 and s[i]!=' ': # 从后向前 搜索第一个空格
i-=1
res.append(s[i+1:j+1])
while s[i]==' ':
i-=1
j = i
return ' '.join(res)
网友评论