【问题标题】:Efficient way for multiple string pattern matching?多字符串模式匹配的有效方法?
【发布时间】: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


【解决方案1】:

如需灵感,您可以查看these classes。你最好先从samples 开始。该方法是 trie 和 FSA 的混合体。 您必须自己实现准备模式的逻辑。当多个模式与您的字符串匹配时,您还必须注意结果的顺序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-29
    • 1970-01-01
    • 2017-12-03
    • 2014-05-28
    • 2015-05-29
    • 1970-01-01
    • 2018-10-04
    相关资源
    最近更新 更多