17网站一起做网店优势与劣势,天津河西做网站哪家好,做网站微信群,东营做网站m0536目录 一、题目二、解法完整代码 一、题目
给你一个字符串 s #xff0c;请你反转字符串中 单词 的顺序。
单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。
返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。
注意#xff1… 目录 一、题目二、解法完整代码 一、题目
给你一个字符串 s 请你反转字符串中 单词 的顺序。
单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。
返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。
注意输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中单词间应当仅用单个空格分隔且不包含任何额外的空格。
示例 1
输入s “the sky is blue” 输出“blue is sky the” 示例 2
输入s hello world 输出“world hello” 解释反转后的字符串中不能存在前导空格和尾随空格。 示例 3
输入s “a good example” 输出“example good a” 解释如果两个单词间有多余的空格反转后的字符串需要将单词间的空格减少到仅有一个。
提示
1 s.length 104 s 包含英文大小写字母、数字和空格 ’ ’ s 中 至少存在一个 单词
进阶如果字符串在你使用的编程语言中是一种可变数据类型请尝试使用 O(1) 额外空间复杂度的 原地 解法。 二、解法
经典双指针问题。 既然是倒序放置单词那么就可以利用双指针 从后面开始找单词找到一个单词就拼接到答案res中最后将res返回就好了 从后往前需要注意的就是边界以及对空格的处理 完整代码
class Solution:def reverseWords(self, s: str) - str:res n len(s)right_side n - 1while right_side 0:end right_sidewhile end 0 and s[end] :end - 1start endwhile start 0 and s[start] ! :start - 1if start end:breakword s[start 1: end 1]res wordright_side startreturn res[1 : ]