我有一个词汇,, a
, abandon
... , z
.
出于某种原因,我将使用数组而不是 Trie 来存储它们。
因此,一个简单的方法可以是:wordA\0wordB\0wordC\0...word\0
但我认为还有一些更经济的记忆方法。
由于like
是 的子串likely
,我们只能存储第一个位置和长度,like
而不是字符串本身。因此,我们生成了一个“大字符串”,其中包含词汇表中的每个单词并使用position[i]
并length[i]
获得第i
-th 个单词。
例如,词汇表包含三个单词ab
和。我构造为“大字符串”。cd
bc
abcd
position[0] = 0, length[0] = 2
position[1] = 2, length[1] = 2
position[2] = 1, length[2] = 2
那么如何生成“大字符串”是这个问题的关键,有什么很酷的建议吗?
我认为这个问题类似于TSP问题(Traveling Salesman Problem),是一个NP问题。