【问题标题】:Efficient algorithm for strings - regex matching字符串的高效算法 - 正则表达式匹配
【发布时间】:2017-06-24 14:23:18
【问题描述】:

问题陈述:

给定两个字符串列表 A 和正则表达式 B(它们也是字符串)。
对于列表 B 中的每个正则表达式,查找列表 A 中的所有匹配字符串。
列表 A 的长度 字符串 B 的长度 字符串长度,正则表达式 假设正则表达式匹配和字符串比较需要 O(K) 时间,并且正则表达式可以包含任何 python 正则表达式支持的操作。

我的算法:

for regex in B:
    for s in A:
        if regex.match(s):
            mapping[regex].add(s)

这需要O(N*M*K) 时间。
有没有什么方法可以在牺牲空间的情况下提高时间效率(使用任何数据结构)?

【问题讨论】:

    标签: python regex string algorithm data-structures


    【解决方案1】:

    就时间复杂度而言,这几乎是最快的速度。

    每个正则表达式必须与每个字符串至少匹配一次。否则,您将无法获得“匹配”或“不匹配”的信息。

    就绝对时间而言,您可以使用filter 来避免慢速 Python 循环:

    mapping = {regex: filter(re.compile(regex).match, A) for regex in B}
    

    【讨论】:

      猜你喜欢
      • 2015-07-31
      • 2023-03-18
      • 2012-06-05
      • 2013-12-25
      • 1970-01-01
      相关资源
      最近更新 更多