LeetCode - #186 翻转字符串里的单词 II(会员题)

打印 上一主题 下一主题

主题 1030|帖子 1030|积分 3090



      网罗开发   (小红书、快手、视频号同名)   
    大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程范畴的软硬技能知识以及前沿技能,包括iOS、前端、Harmony OS、Java、Python等方向。在移动端开发、鸿蒙开发、物联网、嵌入式、云原生、开源等范畴有深厚造诣。
图书作者:《ESP32-C3 物联网工程开发实战》
图书作者:《SwiftUI 入门,进阶与实战》
超级个体:COC上海社区主理人
特约讲师:大学讲师,谷歌亚马逊分享高朋
科技博主:极星会首批签约作者


  
媒介

本题为 LeetCode 的高级会员解锁题
我们社区陆续会将顾毅(Netflix 增长黑客,《iOS 面试之道》作者,ACE 职业健身教练。)的 Swift 算法题题解整理为文字版以方便大家学习与阅读。
LeetCode 算法到目前我们已经更新到 179 期,我们会保持更新时间和进度(周一、周三、周五早上 9:00 发布),每期的内容不多,我们希望大家可以在上班路上阅读,长久积累会有很大提拔。
不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。假如大家有建媾和意见接待在文末留言,我们会努力满足大家的需求。
   难度程度:中等
  1. 描述

给定一个字符串,逐个翻转字符串中的每个单词。
2. 示例

示例 1
  1. 输入: ["t","h","e"," ","s","k","y"," ","i","s"," ","b","l","u","e"]
  2. 输出: ["b","l","u","e"," ","i","s"," ","s","k","y"," ","t","h","e"]
复制代码
注意:


  • 单词的定义是不包含空格的一系列字符
  • 输入字符串中不会包含前置或尾随的空格
  • 单词与单词之间永久是以单个空格隔开的
进阶: 使用 O(1) 额外空间复杂度的原地解法。
3. 答案

  1. class ReverseWordsStringII {
  2.     func reverseWords(_ str: inout [Character]) {
  3.         var last = 0
  4.         
  5.         reverse(&str, 0, str.count - 1)
  6.         
  7.         for i in 0..<str.count {
  8.             if i + 1 == str.count || (str[i] != " " && str[i + 1] == " ") {
  9.                 reverse(&str, last, i)
  10.                 last = i + 2
  11.             }
  12.         }
  13.     }
  14.    
  15.     fileprivate func reverse<T>(_ array: inout [T], _ startIdx: Int, _ endIdx: Int) {
  16.         var (left, right) = (startIdx, endIdx)
  17.   
  18.         while left < right {
  19.             (array[left], array[right]) = (array[right], array[left])
  20.             left += 1
  21.             right -= 1
  22.         }
  23.     }
  24. }
复制代码


  • 重要思想:把整个字符串倒过来,然后把每个单词倒过来。
  • 时间复杂度: O(n)
  • 空间复杂度: O(1)
该算法题解的堆栈:LeetCode-Swift
点击前去 LeetCode 练习
关于我们

我们是由 Swift 爱好者共同维护,我们会分享以 Swift 实战、SwiftUI、Swift 基础为焦点的技能内容,也整理收集优秀的学习资料。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

立聪堂德州十三局店

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表