现在我们假设:
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"
的所有内容;很明显,这将是第1行和第4行。
所以它看起来像SQL数据库查询,但我需要使用Java或Python实现。
此外,输入数据应该非常大,所以我实际上正在考虑更有效的方法,如Trie
来存储信息。
但通常Trie应该用于前缀字符串问题;比如,给定一个字符串列表,我们想要找到包含模式he
的所有字符串,
所以最终名单可能是:
he, hell, help, hello....
虽然对于我的问题,这两种模式并不是连续的;但Trie确实可以为大输入节省大量空间。
那么使用Trie解决这种多模式匹配的想法是什么? 或者我不知道的其他数据结构?
由于
答案 0 :(得分:0)
为了获得灵感,您可以查看these classes。您最好先从samples开始。这种方法是trie和FSA的混合体。 您必须自己实现准备模式的逻辑。当多个模式与您的字符串匹配时,您还必须处理结果的顺序。