翻转单词顺序
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。
解法有2种:
- 用库函数做
- 用双指针做
二者时间复杂度空间复杂度相同都是O(N)
库函数做:
class Solution:
def reverseWords(self, s: str) -> str:
# 库函数做
result = []
tem = s.split()
for i in tem[::-1]:
result.append(i)
res = " ".join(result)
return(res)
双指针做,注意下面注释的注意点:
class Solution:
def reverseWords(self, s: str) -> str:
#双指针
res = []
s = s.strip()
i, j = len(s) - 1, len(s) - 1
while i > -1:
while i> -1 and s[i] != " ":#注意这里必须加限制条件i>-1,因为在执行到最后一个单词时,i-=1,得到的是-1
i-=1
res.append(s[i+1:j+1])
while s[i] == " ":
i-=1
j = i
return(" ".join(res))