【发布时间】:2014-10-19 22:45:27
【问题描述】:
我正在尝试解决我尚未构建的问题,所以我可能会采取错误的方式。如果您碰巧知道其他可能性,我愿意接受。
所以,我想简单地检查一个字符串是否完全存在于预先制作的字符串列表中。这个列表可能是一个数组或一个字典,我不确定什么是最好的。
我要做的是找到一种快速/最佳的方式来浏览该数组并查找我的话是否在其中。我在考虑二分法搜索,但我不确定。
我有两个“解决方案”:
解决方案 1:
该数组/字典将包含大约 70.000 个单词,按字母顺序排序。 我从头到尾浏览数组,直到找到我的匹配项。
这可能会非常慢,特别是如果我的单词以 Z 开头。
解决方案 2:
我有一个数组allTheWords,其中包含 27 个数组“A”、“B”、“C”等。
每个数组都包含以该字母开头的每个单词。
我检查给定字符串的第一个字母,然后从头到尾浏览我的数组,直到找到匹配项。 这将比解决方案 1 快得多,所以我觉得我领先了一步,但它仍然不是最优的。
这可行吗?你知道更好的吗?我在正确的道路上吗?
注意:我对此的代码为零,我仍然在应用程序的纸面/理论方面,只有伪代码和少量图纸。
【问题讨论】:
-
我认为如果数组是有序的,最快的方法是进行二进制搜索。你会找到很多文档,但如果你没有得到它,我会帮助你
-
哈希图可以让你“即时”访问给定的数据,尤其是当它们是字符串时。所以 +1 @Fogmeister 回答。
-
基本上,您想对排序列表、哈希表(例如 NSDictionary/NSSet)、基数树使用二进制搜索,或者只是将所有内容放入数据库中,让数据库软件处理搜索。
-
@Zil 我的回答有用吗?如果是这样,请记住投票并接受它。否则,让我知道什么不起作用,我会尝试修复它。
标签: ios arrays string dictionary