亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Swift > 正文

Swift算法實現逐字翻轉字符串的方法示例

2020-03-09 17:45:51
字體:
來源:轉載
供稿:網友

前言

翻轉字符串在字符串算法中算是比較常見的,而且被很多公司用作筆試題。”逐字翻轉字符串”是翻轉字符串的翻版,也是之前Google的面試題,原題是這樣的:

Given an input string, reverse the string word by word.A word is defined as a sequence of non-space characters.The input string does not contain leading or trailing spaces and the words are always separated by a single space.For example,Given s = "the sky is blue",return "blue is sky the".Could you do it in-place without allocating extra space?

簡而言之就是:”the sky is blue”—>”blue is sky the”

所以,對于本文,要解決的算法是:

逐字翻轉字符串,例如:"the sky is blue"—>"blue is sky the"

接下來看下實現思路和代碼。

實現思路及代碼

既然是字符串翻轉的翻版,我們就可以利用之前翻版字符串的思路去解決就可以了,不過這道題要有兩次翻轉:

第一次翻轉,整體翻轉:”the sky is blue” -> “eulb si yks eht”

第二次翻轉,單詞翻轉:”eulb si yks eht” -> “blue is sky the”

所以,首先可以實現一個可以翻轉局部和全部字符串的算法,傳入字符數組、startIndex 和 endIndex ,其中 startIndex 和 endIndex 分別為要翻轉的字符串的起始下標和結束下標,也就是要翻轉 startIndex 和 endIndex 之間(包含)的字符,代碼如下:

func _reverseStr( _ chars:inout [Character], _ startIndex:Int, _ endIndex:Int){  var startIndex = startIndex var endIndex = endIndex  if startIndex <= endIndex {    let tempChar = chars[endIndex]  chars[endIndex] = chars[startIndex]  chars[startIndex] = tempChar    startIndex += 1  endIndex -= 1    _reverseStr(&chars,startIndex,endIndex)   } }

之后就可以利用上面的算法去完成前面說的兩次翻轉:

func reverseWords(_ str:String) -> String{  var chars = [Character](str.characters)  //首先翻轉整個字符串所有字符,"the sky is blue" -> "eulb si yks eht" _reverseStr(&chars,0,chars.count-1)  //然后翻轉每個單詞中的字符,"eulb si yks eht" -> "blue is sky the" var startIndex = 0 for endIndex in 0 ..< chars.count {  if endIndex == chars.count - 1 || chars[endIndex + 1] == " " {   _reverseStr(&chars, startIndex, endIndex)   startIndex = endIndex + 2  } }  return String(chars)}

完整算法代碼:

//翻轉指定范圍的字符func _reverseStr( _ chars:inout [Character], _ startIndex:Int, _ endIndex:Int){  var startIndex = startIndex var endIndex = endIndex  if startIndex <= endIndex {    let tempChar = chars[endIndex]  chars[endIndex] = chars[startIndex]  chars[startIndex] = tempChar    startIndex += 1  endIndex -= 1    _reverseStr(&chars,startIndex,endIndex)   } } //逐字翻轉字符串func reverseWords(_ str:String) -> String{  var chars = [Character](str.characters)  //首先翻轉整個字符串所有字符,"the sky is blue" -> "eulb si yks eht" _reverseStr(&chars,0,chars.count-1)  //然后翻轉每個單詞中的字符,"eulb si yks eht" -> "blue is sky the" var startIndex = 0 for endIndex in 0 ..< chars.count {  if endIndex == chars.count - 1 || chars[endIndex + 1] == " " {   _reverseStr(&chars, startIndex, endIndex)   startIndex = endIndex + 2  } }  return String(chars)} reverseWords("the sky is blue") //return "blue is sky the"

總結

以上就是關于Swift算法實現逐字翻轉字符串的方法,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到swift教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91成人国产在线观看| 亚洲成人av在线播放| 亚洲级视频在线观看免费1级| 日韩在线观看免费高清完整版| 久久久国产视频91| 视频在线一区二区| 亚洲一区av在线播放| 久久精品视频中文字幕| 欧美重口另类videos人妖| 久久久国产一区二区| 爽爽爽爽爽爽爽成人免费观看| 国产精品午夜视频| 日韩av手机在线观看| 欧美日韩午夜视频在线观看| 91热精品视频| 国产精品视频26uuu| 欧美日韩高清在线观看| 欧美一区二区大胆人体摄影专业网站| 久久精品国产一区二区三区| 欧美精品videosex性欧美| 国产午夜精品一区理论片飘花| 亚洲深夜福利视频| 亚洲乱码国产乱码精品精| 日韩在线免费视频| 亚洲精品美女网站| 日韩av123| 在线成人中文字幕| 日韩美女免费线视频| 国产精品自拍网| 欧美成人小视频| 欧美区二区三区| 亚洲天堂免费视频| 97av在线视频免费播放| 国产精品久久久999| 亚洲xxxx妇黄裸体| 91国产在线精品| 国产亚洲美女精品久久久| 成人网址在线观看| 国产激情视频一区| 在线观看91久久久久久| 亚洲午夜精品视频| 日韩欧美a级成人黄色| 欧美电影免费观看高清完整| 91色p视频在线| 2023亚洲男人天堂| 岛国视频午夜一区免费在线观看| 亚洲国产精品热久久| 97香蕉超级碰碰久久免费软件| 91免费看片网站| 欧美激情精品久久久| 亚洲男女自偷自拍图片另类| 黄色成人在线免费| 亚洲深夜福利视频| 久久精品成人欧美大片古装| 国产丝袜高跟一区| 欧美午夜精品久久久久久人妖| 亚洲国产成人精品久久| 亚洲成人精品视频| 国产精品成人va在线观看| 国产日韩av在线播放| 成人免费网站在线| 久久久天堂国产精品女人| 日韩一二三在线视频播| 亚洲午夜女主播在线直播| 最近更新的2019中文字幕| 久久av红桃一区二区小说| 色系列之999| 色综合亚洲精品激情狠狠| 欧美电影在线观看完整版| 亚洲第一免费网站| 97久久精品人搡人人玩| 日韩经典第一页| 亚洲一区二区三区在线免费观看| 成人午夜一级二级三级| 91系列在线观看| 国产精品自产拍在线观看中文| 91精品国产综合久久香蕉| 国产精品一区二区在线| 欧美高清理论片| 91精品国产亚洲| 国产日韩欧美在线| 国产91色在线播放| 亚洲成人免费在线视频| 国产精品专区一| 国产成人在线亚洲欧美| 91精品国产91久久久久福利| 国产亚洲日本欧美韩国| 久久九九全国免费精品观看| 91情侣偷在线精品国产| 国产亚洲成av人片在线观看桃| 曰本色欧美视频在线| 久久精品国产2020观看福利| 亚洲精品久久久久中文字幕二区| 国产欧美一区二区白浆黑人| 中文字幕无线精品亚洲乱码一区| 全球成人中文在线| 欧美成人激情视频免费观看| 精品亚洲一区二区三区| 欧美精品久久久久久久久| 亚洲色图18p| 国产啪精品视频网站| 久久久久久网站| 亚洲精品福利资源站| 欧美在线www| 国产91精品久久久久| 国产精品88a∨| 日韩在线播放视频| 日韩成人av一区| 久久伊人91精品综合网站| 中文字幕日韩精品有码视频| 日韩精品免费视频| 国产在线观看不卡| 日韩中文字幕在线免费观看| 一区国产精品视频| 久久精品国产久精国产思思| 国产亚洲精品成人av久久ww| 美女扒开尿口让男人操亚洲视频网站| 国产精品免费一区豆花| 国产男女猛烈无遮挡91| 国产美女被下药99| 欧美激情成人在线视频| 亚洲男人天堂手机在线| 中日韩美女免费视频网址在线观看| 日韩在线小视频| 亚洲性线免费观看视频成熟| 日韩av大片免费看| 一区二区欧美亚洲| 久久久久久91| 98视频在线噜噜噜国产| 国产精品影片在线观看| 欧美日韩在线观看视频小说| 国产成人一区三区| 亚洲国产欧美在线成人app| 久久青草精品视频免费观看| 久久国产精品久久久| 午夜精品久久久久久久男人的天堂| 国产精品扒开腿爽爽爽视频| 欧美激情手机在线视频| 久久精品国产免费观看| 亚洲情综合五月天| 久久久久国产一区二区三区| 国产成人综合一区二区三区| 国产中文字幕亚洲| 国产欧美欧洲在线观看| 国产一区红桃视频| 成人看片人aa| 91视频8mav| 97av视频在线| 国产精品video| 成人有码在线视频| 国产精品国产自产拍高清av水多| 国产精品电影久久久久电影网| 亚洲欧美国产精品久久久久久久| 亚洲欧美激情精品一区二区| 久久91精品国产91久久跳| 97超级碰碰碰久久久| www.国产一区| 免费99精品国产自在在线| 欧美精品手机在线| 91亚洲人电影| 尤物九九久久国产精品的特点| 国产精品九九久久久久久久| 在线成人中文字幕| 色哟哟网站入口亚洲精品|