我试图解决我尚未构建的问题,所以我可能会采取错误的方式。如果你碰巧知道其他可能性,我会对其他可能性持开放态度。
因此,我想简单地检查字符串中是否存在完全存在的字符串。这个列表可能是一个数组或字典,我不知道什么是最好的。
我想要做的是找到一种快速/最佳的方式来浏览该数组并查找我的单词是否存在。我在考虑二分法搜索,但我不确定。
我有两个"解决方案" :
解决方案1:
该数组/字典将包含大约70.000个单词,按字母顺序排序。 我从头到尾浏览阵列,直到我到达我的比赛。
这可能会非常慢,特别是如果我的单词以Z开头。
解决方案2:
我有一个数组allTheWords
,其中包含27个阵列" A"," B"," C"等等。
每个数组都包含以该字母开头的每个单词。
我检查我给定字符串的第一个字母,然后从头到尾浏览我的数组,直到我到达我的匹配。 这比解决方案1要快得多,所以,我觉得我领先一步,但它仍然不是最优的。
这可行吗?你知道更好的事吗?我在正确的道路上吗?
注意:我没有关于此的代码,我仍然在应用程序的论文/理论方面,只有伪代码和小图纸。
答案 0 :(得分:1)
修改强>
事实上,您可能只使用NSSet
。我相信它使用类似的搜索NSDictionary
来保持唯一性。所以你可以使用方法[wordSet containsObject:theSearchWord];
。
应(但我无法找到文档)也会提供O(1)搜索效果,并且没有"值&#的冗余34;在字典里。
原始回答
嗯......如果你像这样使用NSDictionary
......
{
<THE WORD>: <BOOL>
}
即
@{
@"Apple": @YES,
@"Banana": @YES,
@"Orange": @YES
}
然后你可以这样做......
NSNumber *wordValue = wordDictionary[@"Apple"];
然后wordValue将为@YES
或nil
。
此搜索时间为O(1)
。
如果要列出单词,可以使用类方法...
[wordDictionary enumerateObjectsAndKeys...
或者你可以获得NSArray
个单词......
NSArray *justTheWords = [wordDictionary allKeys];