尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

元宝 LeetCode 151. 反转字符串中的单词 Python3实现

元宝    LeetCode 151. 反转字符串中的单词  Python3实现 思路题目要求反转字符串中单词的顺序同时去除多余空格首尾空格、单词间多个空格。核心技巧整体反转 局部反转去掉首尾空格将中间连续空格压缩为单个空格整体反转整个字符串再逐个反转每个单词例““the sky is blue””去空格 →““the sky is blue””整体反转 →““eulb si yks eht””逐词反转 →““blue is sky the”” ✅这种方法只需 O(n) 时间、O(n) 空间Python 字符串不可变需用数组。代码实现class Solution:def reverseWords(self, s: str) - str:# 1. 清洗去首尾空格压缩中间空格s s.strip()chars list(s)# 2. 整体反转 self.reverse(chars, 0, len(chars) - 1) # 3. 逐个反转每个单词 left 0 for i in range(len(chars) 1): # 遇到空格或到达末尾说明一个单词结束 if i len(chars) or chars[i] : self.reverse(chars, left, i - 1) left i 1 return .join(chars) def reverse(self, chars, l, r): 反转 chars[l:r1] while l r: chars[l], chars[r] chars[r], chars[l] l 1 r - 1更 Pythonic 的解法面试也常用class Solution:def reverseWords(self, s: str) - str:return ’ .join(s.split()[::-1])“s.split()”自动按空白分割并丢弃空字符串天然处理多余空格“[::-1]”切片反转列表“’ .join(…)”用单空格拼回字符串复杂度对比解法 时间 空间 特点双反转原地思想 O(n) O(n) 考察指针与反转技巧面试加分“split()[::-1]” O(n) O(n) 代码简洁实际工程首选关键易错点不要直接用“chars.reverse()”要自己写双指针体现对过程的理解单词边界判断要用“i len(chars) or chars[i] ’ ”漏掉末尾会导致最后一个单词不反转Python 中“str” 不可变必须转“list” 再操作最后“‘’.join()”推荐面试时先写出“split()[::-1]” 展示思路清晰再补上双反转版本体现底层能力。
返回列表