Swift iOS macOS 字符串 插入到已排序的數組中,字符串對比
今天需要實現這樣一個功能:
有一個字符串 ad
,需要按順序插入到這樣一個字符串數組中。
注意:這個數組中有近8萬條數據,所以不可能每添加一個數據都重新排序一下,這樣會很耗費時間和資源
var arr = ["a", "ab", "ac", "abz", "nnqi", "nnq", "nnec"]
實現方法
- 先將數組排序
- 然後找到需要插入到的字符串應該在數組中的位置
- 插入它
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"]