给定一组 50k 个字符串,我需要找到所有对(s, t)
,例如s
,t
和s + t
都包含在这个集合中。
,还有一个额外的约束:s.length() >= 4 && t.length() >= 4
。这使得可以按长度为 4 的前缀和单独的后缀对字符串进行分组。然后对于每个composed
长度至少为 8 的字符串,我查找s
使用 的前四个字符composed
的候选集和t
使用其后四个字符的候选集。这有效,但需要查看 30M 候选对(s, t)
才能找到 7k 结果。
如此高的候选数量来自这样一个事实,即字符串是(主要是德语)词汇量有限的单词,并且单词的开头和结尾通常相同。它仍然比尝试所有 2.5G 对要好得多,但比我希望的要糟糕得多。
由于附加约束可能会被删除并且集合会增长,我正在寻找更好的算法。
有人抱怨我不问问题。所以缺少的问号在下一个句子的末尾。如何在不使用约束的情况下更有效地完成这项工作?
元芳怎么了
紫衣仙女
相关分类