1. 程式人生 > >反轉字串, 以單詞反轉句子

反轉字串, 以單詞反轉句子

// 給一個字串,將其按照單詞順序進行反轉。比如說 "the sky is blue", 那麼反轉就是 "blue is sky the"。
// 反轉字串
fileprivate func reverse<T> (_ chars: inout [T], _ start: Int, _ end: Int) {
    // 首下標, 末下標
    var start = start, end = end
    
    while start < end {
        
        // 交換兩個下標之間的資料
        (chars[start], chars[end]) = (chars[end], chars[start])
        
        
// 下標向中間移動 start += 1 end -= 1 } } // 反轉句子, 以單詞反轉 func reverseWords(s:String?) -> String? { // 如果字串不存在則返回 guard let s = s else { return nil } // 將字串轉換為字元陣列 var chars = Array(s), start = 0 // 反轉字元陣列 reverse(&chars, 0, chars.count - 1);
// 遍歷字元陣列 for i in 0 ..< chars.count { // 如果下標i走到空格, 直到末尾 if i == chars.count - 1 || chars[i+1] == " " { // 反轉從start到i這段陣列當中的字元 reverse(&chars, start, i) // start後移, 跳過空格 start = i + 2 } }
// 返回反轉後的字串 return String(chars) } // 反轉前 let str = "the sky is blue" // 列印 print("反轉前: " + str) // 反轉後 let reverseStr:String? = reverseWords(s: str) // 列印 print("反轉後: " + reverseStr!)