以下是该方案:
我有一个数百万长度为3-32的随机字符串数组,以及一个单词数组(字典)。
我需要测试是否可以通过连接1,2或3个不同的字典单词来组成随机字符串。
由于字典单词会有所修正,我可以对它们进行任何预处理。
理想情况下,我希望通过对字典进行某种预处理来优化查找速度。
我应该考虑采用哪种数据结构/算法来实现这一目标?
答案 0 :(得分:5)
首先,从你的词典中构建一个 B-tree,如 Trie结构。每个根都会映射到一个字母。然后,每个第二级子树将包含可以用两个字母组成的所有单词,依此类推。
然后接受你的话,从第一个字母开始,然后沿着 B-Tree Trie走,直到你找到一个匹配,然后递归地将这个算法应用到单词的其余部分。如果您在任何时候都找不到匹配项,则您知道无法通过concats形成单词。
答案 1 :(得分:2)
将字典字符串存储在散列集数据结构中。迭代您想要检查1,2或3个部分的字符串的所有可能拆分,并且对于每个这样的拆分,查找散列集中的所有部分。
答案 2 :(得分:0)
+
。