【发布时间】:2015-09-19 02:05:41
【问题描述】:
我正在开发一个 C++ 应用程序来首先解析正则表达式字符串,然后用它执行一些计算。是否有任何现有的算法可以输出长度为 L 的字符串的数量 N,这些字符串可以被给定的正则表达式(例如 (a|ab)* | (aa|bb)*)识别?或者是否有我可以使用的数学公式,例如涉及阶乘的数学公式?我只想获取给定数字 L 的此类正则表达式短语可以识别的字符串数 N。(a|ab)* 的示例正则表达式可以识别多少长度为 5 (L) 的字符串。我认为答案是 5。但是对于大量的 L,我想知道是否有任何算法或数学表达式可以计算出来。
【问题讨论】:
-
(something)*匹配的字符串个数?严重地?它是无限的。 -
您需要更新您的正则表达式或给出实际字符串的示例,您可能误解了模式匹配。
-
@ergonaut 你是在跟我说话还是 te7?如果 te7 给我们提供实际的字符串会有什么帮助?
-
@devianfan 也许他的意思是 (a|ab)?否则你是对的,算法会输出 a、aa、aaa、aaaa.. 并且永远不会到达 'ab's。
-
如果有人想尝试解决这个问题,同样的问题是hackerrank的挑战:hackerrank.com/challenges/count-strings