【问题标题】:Data structure that allows fast access to substrings within structured text?允许快速访问结构化文本中的子字符串的数据结构?
【发布时间】:2017-07-03 18:15:48
【问题描述】:

我在内存中有一些较大的(几 KB,可能最大 1 MB)字符串,它们包含结构化文本,如下例所示:

Def[prop=A, ... some more kv pairs]
  SubDef[prop=B, ... some more kv pairs]
    SubSubDef[prop=C, ... some more kv pairs]
    ... goes deeper ...
Def[prop=X, ... some more kv pairs]
  SubDef[prop=Y, ... some more kv pairs]
    SubSubDef[prop=Z, ... some more kv pairs]
    ... goes deeper ...
SubDef[prop=Y, ... some more kv pairs]   <- yeah, SubDef can also be on level 1
  SubSubDef[prop=Z, ... some more kv pairs]

我需要从文件中读取这些字符串,然后“查询”它们以获取数据。例如,查询将是:Def[].SubDef[].prop[],这意味着给我所有 prop 内的所有 SubDef,它们都在 Def 内。

我的想法是当我阅读文件结构时,我可以以某种方式索引表示结构的关键字。就像,我可以保留所有Def字符串,所有SubDef和所有SubSubDef的位置数组,所以当我需要搜索SubDef属性时,我可以直接跳转到这些关键字的偏移量整个字符串。

我想知道是否有一些通用的数据结构?基本上它是某种图表?不是真正的树,因为SubDef 也可以在级别 1。

为了澄清,该字符串中有很多关键字,但我只关心其中的一个子集。

是否有任何通用的数据结构来表示结构化字符串中关键字的偏移量?

【问题讨论】:

    标签: string algorithm data-structures


    【解决方案1】:

    它实际上是一棵树,在第一层,你有带有树子元素的根:def、def 和 subdef。

    将您的结构转换为树,然后您可以使用任何算法(甚至是 XPath)进行查询

    【讨论】:

    • 我有时间重新审视这个问题,是的,我同意,将它建模为一棵树是有意义的。此外,我将在列表中跟踪树的级别,以便我可以快速访问级别 N 上的所有节点。感谢您的建议。
    猜你喜欢
    • 2012-02-25
    • 1970-01-01
    • 1970-01-01
    • 2012-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    相关资源
    最近更新 更多