反转字符串中的单词
Reverse Words in a String
本机进度仅保存在当前浏览器
题目描述
给你一个字符串 s,请你反转字符串中单词的顺序。单词由非空格字符组成,输入中单词之间可能存在多个空格,结果应仅用单个空格分隔且不含首尾空格。
示例:s = " the sky is blue ",输出 "blue is sky the"。
解题思路
- 语言内置 split + reverse 一行可解;面试常要求 O(1) 空间的原地解法,练习手动处理。
- 原地三步:先整体反转全串,再逐个单词反转回来,最后清理多余空格(原地压缩)。
- 也可以先扫描切词再倒序拼接,实现简单且易于说清,注意空格压缩细节。
参考实现
查看参考实现Python · 建议先自行作答
def reverseWords(s):
# 扫描切词后倒序拼接,兼顾空格压缩
words = []
i, n = 0, len(s)
while i < n:
if s[i] != ' ':
j = i
while j < n and s[j] != ' ':
j += 1
words.append(s[i:j])
i = j
else:
i += 1
return ' '.join(reversed(words))