Swift iOS macOS 字符串 插入到已排序的數組中,字符串對比

Swift iOS macOS 字符串 插入到已排序的數組中,字符串對比

今天需要實現這樣一個功能:
有一個字符串 ad,需要按順序插入到這樣一個字符串數組中。
注意:這個數組中有近8萬條數據,所以不可能每添加一個數據都重新排序一下,這樣會很耗費時間和資源

var arr = ["a", "ab", "ac", "abz", "nnqi", "nnq", "nnec"]

實現方法

  1. 先將數組排序
  2. 然後找到需要插入到的字符串應該在數組中的位置
  3. 插入它

swift 中默認的字符串對比是這樣的:

// 以下均爲 true
"aa" > "a"
"b"  > "aa"
"ab" > "aa"

如果你有特殊的對比需求,可以查看官方文檔中有沒有對應的可選字符串對比參數:NSString.CompareOptions

// 1. 原數組
var arr = ["a", "ab", "ac", "abz", "nnqi", "nnq", "nnec"]

// 2. 排序
arr.sort(by: <)
// 排序後:["a", "ab", "abz", "ac", "nnec", "nnq", "nnqi"]

// 3. 需要插入的字符串
let itemNeedInsert = "ad"

// 4. 獲取需要插入的位置 index
if let index = arr.firstIndex(where: {$0 > itemNeedInsert}) {
    print(index)
    // 5. 取到位置 4
    
    // 6. 插入到數組的指定位置
    arr.insert(itemNeedInsert, at: index)
}

print(arr)
//7. 結果: ["a", "ab", "abz", "ac", "ad", "nnec", "nnq", "nnqi"]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章