Abu*_*hew 14 string language-theory regular-language
我在解决这个问题时遇到了问题: - 它是一个任务,我解决了它,但它看起来太长而且模糊,可以帮助我,请帮助我......
具有偶数个a和奇数个b的字符串的正则表达式,其中字符集= {a,b}.
pax*_*blo 19
一种方法是将它传递给两个正则表达式,确保它们都匹配(假设您想要使用正则表达式,请参阅下面的替代方法):
^b*(ab*ab*)*$
^a*ba*(ba*ba*)*$
Run Code Online (Sandbox Code Playgroud)
其他任何东西(事实上,甚至是那个)很可能只是一种聪明的尝试,一般来说是一次大规模的失败.
第一正则表达式可确保有偶数个a与b在混合(之前,之后和在它们之间)的任何地方.
第二个是类似的,但可以确保有一个奇数编号的b借助于起动a*ba*.
一个更好的方法是完全忽略正则表达式,只需按如下方式运行字符串:
def isValid(s):
set evenA to true
set oddB to false
for c as each character in s:
if c is 'a':
set evenA to not evenA
else if c is 'b':
set oddB to not oddB
else:
return false
return evenA and oddB
Run Code Online (Sandbox Code Playgroud)
虽然正则表达式是一个很好的工具,但它们并不适合所有东西,因为它们的可读性和可维护性降低,它们变得不那么有用了.
对于它的价值,单正则表达式的答案是:
(aa|bb|(ab|ba)(aa|bb)*(ba|ab))*(b|(ab|ba)(bb|aa)*a)
Run Code Online (Sandbox Code Playgroud)
但是,如果我发现团队中的任何人实际上使用了这样的怪物,他们会被送回去再做一次.
这来自Greg Bacon的一篇论文.请参阅此处了解实际的内部工作原理.
小智 5
Even-Even = (aa+bb+(ab+ba)(aa+bb)*(ab+ba))*
Run Code Online (Sandbox Code Playgroud)
(Even-Even 有偶数个 Aas 和 b 两个)
偶数 a 和奇数 b = Even-Even b Even-Even
这应该有效
| 归档时间: |
|
| 查看次数: |
68193 次 |
| 最近记录: |