Regex 正则表达式纵横字谜解算器
接下来,我们假设查找与正则表达式匹配的字符串需要线性时间。我的建议是我们也可以通过编程来解决正则表达式的纵横字谜,对吗 如果是,解决NxM正则表达式纵横字谜的时间复杂度是多少 例如:Regex 正则表达式纵横字谜解算器,regex,string,algorithm,performance,time-complexity,Regex,String,Algorithm,Performance,Time Complexity,接下来,我们假设查找与正则表达式匹配的字符串需要线性时间。我的建议是我们也可以通过编程来解决正则表达式的纵横字谜,对吗 如果是,解决NxM正则表达式纵横字谜的时间复杂度是多少 例如: 这是NP难,即使你不允许反向引用。有一个简单的映射,从这个问题 如果您有集合S[1]、S[2]、…、S[n](具有并集S),并且没有失去一般性,集合包含一些n的所有数字1…n。将S[i]表示为长度为n的字符串,如果k位于S[i],则1位于第k位,否则表示0。 让regexp拼图的列都相同--0*10*,第k行是“(
这是NP难,即使你不允许反向引用。有一个简单的映射,从这个问题 如果您有集合
S[1]、S[2]、…、S[n]
(具有并集S
),并且没有失去一般性,集合包含一些n的所有数字1…n。将S[i]
表示为长度为n的字符串,如果k位于S[i]
,则1
位于第k位,否则表示0
。
让regexp拼图的列都相同--0*10*
,第k行是“(S[k])|(0*)”
例如,如果S[1]={1,4},S[2]={2},S[3]={3}
和S[4]={2,3}
,那么谜题将是:
0*10* 0*10* 0*10* 0*10*
1001|0*
0100|0*
0010|0*
0110|0*
这个regexp难题的一个解决方案是使用
S[i]
“即使您不允许反向引用。”精确覆盖{1,2,3,4}。您的意思是什么?您在问题中的示例有\1
和\2
,它们不是正则表达式的一部分,尽管有些实现允许它们。通常,确定具有反向引用的regexp是否与字符串匹配需要指数时间。