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"]