【发布时间】:2014-05-22 22:39:54
【问题描述】:
我有一个动态数组,看起来像:
array(
"animal > hairy > dog > Médor",
"animal > hairy > dog > Fido",
"animal > hairy > dog > Max",
"animal > hairy > cat > Scratchy",
"animal > hairy > bear > badBoy"
)
如何轻松获得删除了相似前缀的数组?
我的意思是,我想获得:
array(
"dog > Médor",
"dog > Fido",
"dog > Max",
"cat > Scratchy",
"bear > badBoy"
)
当然,有一种方法可以逐个字母和逐个值进行比较,但它是一个高度复杂的解决方案(相似字母的数量 * 值的数量),我想它存在更好的方法来做到这一点......
有什么帮助吗? 谢谢,
【问题讨论】:
-
您可以构建一个 Trie (en.wikipedia.org/wiki/Trie),然后沿着 Trie 向下走,直到找到一个包含多个子节点的节点。
-
啊啊啊原来是这么叫的,我只叫这个数据结构。
-
这家伙说,当然,有一种方法可以逐字母比较,逐值比较,但这是一个高复杂度的解决方案,这意味着他很清楚这些。他需要的是一种更简单的方法。
-
构建 Trie 会更慢。我链接的帖子以最大程度地减少比较次数。
-
但如果您从未找到答案,您可以查看 WizKid 提供的链接并查看 Gumbo 的答案,这是所有答案中最短且可能最有效的答案那里
标签: php arrays string optimization