【发布时间】:2015-10-04 11:05:19
【问题描述】:
我必须将输入字符串与一组前缀进行匹配。匹配应该是最好的,这样如果abcd* 和abcde* 都存在,那么abcdef 应该匹配abcde*。我为此使用 Trie。问题是输入和前缀集中的字符可以是任何 Unicode 字符。所以,我们在一个简单的 trie 中拥有的 children 数组是不可能的(至少不会足够有效,因为数组大小会非常大)。使用 map 而不是 array 仍然是低效的。我应该如何解决这个问题?
【问题讨论】:
-
我不确定我是否正确理解了这个问题;使用 unicode 作为字符集如何使问题变得更难?
-
支持 unicode(而不是 ASCII)的问题是子数组所需的存储空间吗?
-
对于一个简单的 trie,我们使用该节点的字符索引下一个节点引用。
-
@Simon,是的。没错。
-
一种可能性是按位特里。但是,我也想探索其他选择。