gpt4 book ai didi

iOS : Find a word in a (huge) dictionary/array

转载 作者:行者123 更新时间:2023-11-29 02:43:05 25 4
gpt4 key购买 nike

我正在尝试解决一个我还没有构建的问题,所以我可能采取了错误的方式。如果您碰巧知道其他可能性,我愿意接受。

所以,我想简单地检查一个字符串是否完全存在于预制的字符串列表中。这个列表可以是数组或字典,我不确定哪个最好。

我想做的是找到一种快速/最佳的方式来浏览该数组并确定我的话是否在其中。我在考虑二分法搜索,但我不确定。

我有两个“解决方案”:

解决方案 1:

该数组/字典将包含大约 70.000 个单词,按字母顺序排序。我从头到尾浏览数组,直到找到我的匹配项。

这可能会非常慢,特别是如果我的单词以 Z 开头。

解决方案 2:

我有一个数组 allTheWords,其中包含 27 个数组“A”、“B”、“C”等。每个数组包含以该字母开头的每个单词。

我检查给定字符串的第一个字母,然后从头到尾浏览我的数组,直到找到我的匹配项。这将比解决方案 1 快得多,所以我觉得我领先了一步,但它仍然不是最优的。

这可行吗?你知道更好的东西吗?我在正确的道路上吗?

注意:我对此的代码为零,我仍然停留在应用程序的纸面/理论方面,只有伪代码和少量图纸。

最佳答案

编辑

事实上,您可能只使用 NSSet。我相信它使用与 NSDictionary 类似的搜索来保持唯一性。所以你可以只使用方法[wordSet containsObject:theSearchWord];

这个应该(但我找不到文档)还提供 O(1) 搜索性能,并且字典中没有“值”的冗余。

原始答案

嗯...如果你使用像这样的 NSDictionary...

{
<THE WORD>: <BOOL>
}

@{
@"Apple": @YES,
@"Banana": @YES,
@"Orange": @YES
}

然后你可以做这样的事情......

NSNumber *wordValue = wordDictionary[@"Apple"];

那么 wordValue 将为 @YESnil

其搜索时间为O(1)

如果你想列出单词,你可以使用类方法...

[wordDictionary enumerateObjectsAndKeys...

或者您可以获得单词的 NSArray...

NSArray *justTheWords = [wordDictionary allKeys];

关于iOS : Find a word in a (huge) dictionary/array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25508690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com