【问题标题】:Data structure for repeatedly splitting a string into smaller parts用于重复将字符串拆分为较小部分的数据结构
【发布时间】:2009-07-31 09:14:26
【问题描述】:

我正在尝试编写一个函数来重复匹配正则表达式模式与输入字符串。该函数应将模式 1 与输入字符串匹配,并将其拆分为匹配和不匹配段的部分。随后将在那些不匹配的段上使用模式 2,直到使用所有输入模式。然后,返回参数将是所有子字符串的数组。

简单示例:

input string "abcdefgh" against patterns "bc" and "f", would first split it into "a", "bc" and "defgh". Subsequently pattern "f" would be run against the "a" and "defgh" part and splitting the later into "de", "f", and "gh". Return argument {"a", "bc", "de", "f", "gh"}

(我还会保留一个带有匹配/不匹配信息的关联数组)

但我的问题是:哪种数据结构最适合执行此类任务?以及如何最好地解决这个问题,感觉就像是以递归方式工作的东西。

【问题讨论】:

    标签: c algorithm data-structures


    【解决方案1】:

    您会想到一个链表,每次您将正则表达式与特定节点匹配时,您都会删除相关节点并在其位置插入 3 个链接节点。

    特定的“节点”结构可以像具有 3 个字段的结构一样简单,char* 用于字符串,bool(c 中的char)用于是否匹配以及指向下一个节点。

    【讨论】:

    • 我刚刚看到您要求对数据进行排序(我假设您的意思是它应该按照原始字符串中的顺序出现,就像在您的示例中一样)并且这个数据结构可以做到已经。
    • 另外,我需要插入的节点并不总是 3 个。一个模式可以在需要更多节点的主题内提供超过 1 个匹配,但这不是一个大问题。我正在执行您的建议,希望它会奏效:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-13
    • 2013-08-19
    • 1970-01-01
    相关资源
    最近更新 更多