我有一个包含多个单词的数组。问题是要求我找到那里的所有字谜并找出哪个字谜最多的字谜。这就是我到目前为止所做的:
例如:在排序之前,数组有:[cat dog tac god act]然后在那之后,它会有[act dgo act dgo act]
这种方法似乎很好,但它取决于我在原始数组中的单词数量。如果我的原始数组足够大,它可能会因复制过程而减慢程序速度。而且,我无法跟踪每个单词的字谜数量。什么是解决这类问题的最佳方法,考虑到阵列很大,程序必须快速找到所有的字谜?任何帮助将不胜感激。谢谢。
答案 0 :(得分:1)
我想我会做这样的事情......
NSCountedSet
的{{1}}。这里的对象将是一个排序的字母数组。anagramCounts
集。执行此操作后,anagramCounts
集合将只包含所有可能的字谜,并且每个字符集将存储在有多少字母数量的旁边。
然后,您可以从此集合中获取对象枚举器,并找到具有最高计数的对象枚举器...
甚至......将其添加到上一个列表中。
一开始
anagramCounts
的{{1}}并将其设置为0. NSInteger
的{{1}},并将其保留为零。...
最后
highestAnagramCount
,如果它高于NSArray
,则保存此新值并保存数组。mostCommonAnagram
将告诉你有多少字谜,[anagramCounts countForObject:sortedArray];
将包含已排序的字母数组。