【发布时间】:2018-01-04 23:37:31
【问题描述】:
假设现在我们有:
String[] = {
"Name:John, State:MA, City:Boston, Degree:Master",
"Name:Alex, State:CA, City:San Diego, Degree:PhD",
"Name:Aaron, State:NY, City:NYC, Degree:Master",
"Name:Lily, State:MA, City:Worcester, Degree:Master",
}
我想如何找到同时包含 "State:MA" 和 "Degree:Master" 的 ALL;所以很明显那将是第 1 行和第 4 行。
所以它看起来像 SQL 数据库查询,但我需要使用 Java 或 Python 来实现。
另外,输入数据应该非常大,所以我实际上正在考虑更有效的方法,如Trie 来存储信息。
但通常 Trie 应该用于前缀字符串问题;比如说,给定一个字符串列表,我们希望找到所有包含模式he 的字符串,
所以最终列表可能是这样的:
he, hell, help, hello....
而对于我的问题,这两种模式并不连续;但 Trie 确实可以为大量输入节省大量空间。
那么有什么想法可以使用 Trie 来解决这种多重模式匹配问题吗? 还是其他我不知道的数据结构?
谢谢
【问题讨论】:
-
后缀树可能更合适。在 Java 和 Python 等非本机环境中,Tries 的内存效率非常低,您无法指定树的精确内存布局。
-
看起来像一个重复的问题:stackoverflow.com/questions/954752/…
标签: string pattern-matching trie