iphone - 在 Objective-C 中搜索字符串的最快方法是什么?

标签 iphone objective-c ios

我正在为 iOS 应用程序实现一种自动完成功能。我用于自动完成值的数据是一个以逗号分隔的文本文件,包含大约 100,000 个字符串。这就是我现在正在做的:

  1. 读取文本文件,并创建一个包含 100,000 个 NSStringNSArray
  2. 当用户输入时,执行[array containsObject:text]

肯定有更好/更快的方法来执行此查找。有什么想法吗?

最佳答案

绝对有!不过,它不是“在 Objective-C 中”:您很可能需要自己编写代码。

想法是将您的字符串列表转换为 suffix tree ,一种数据结构,可让您非常快速地按前缀搜索。在后缀树中搜索可能的补全非常快,但结构本身并不容易构建。在 Internet 上快速搜索发现在 Objective C 中没有现成的实现,但您可以 port an implementation in another language , use a C implementation ,如果您的时间不是特别紧迫,甚至可以自己编写。

也许更简单的方法是按字母顺序对字符串进行排序,并对目前输入的前缀运行二进制搜索。尽管不如后缀树高效,但排序数组方法对于 100K 字符串是可以接受的,因为您在不到 17 次检查中就找到了正确的位置。

关于iphone - 在 Objective-C 中搜索字符串的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11586618/

相关文章:

iphone - 在手机上使用 CSS 技巧全宽

ios - 使用 RESTKit 将 url 参数映射到对象

ios - NSMutableArray 动态更新?

iphone - 如何像闹钟专业应用一样播放超过30秒的闹钟声音?

ios - 带 iAd 的应用程序和不带广告的应用程序应该在不同的项目中吗?

javascript - navigator.serviceWorker 在移动版 Chrome 和移动版 Firefox 上始终未定义

ios - 在 phonegap 开发者应用程序中使用 iframe

ios - 在 iOS 中对属性字符串的某些部分进行点击操作

iphone - 应用商店验证问题

objective-c - 无法设置/增加 UIActivityindicator View 的大小