gpt4 book ai didi

string - 具有偶数个 a 和奇数个 b 的字符串的正则表达式

转载 作者:行者123 更新时间:2023-12-03 21:34:26 25 4
gpt4 key购买 nike

我在解决问题时遇到问题:-
这是一个作业,我解决了,但似乎太长且含糊不清,请任何人帮助我......

具有偶数个 a 和奇数个 b 的字符串的正则表达式,其中字符集={a,b}。

最佳答案

一种方法是通过两个正则表达式传递它以确保它们都匹配(假设您想使用正则表达式,请参阅下面的替代方案):

^b*(ab*ab*)*$
^a*ba*(ba*ba*)*$

其他任何事情(事实上,甚至那个)很可能只是一种聪明的尝试,通常是一个巨大的失败。

第一个正则表达式确保有偶数 ab混合中的任何地方(之前,之后和之间)。

第二个类似,但确保存在奇数 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

尽管正则表达式是一个很棒的工具,但它们并不适用于所有情况,而且随着可读性和可维护性的降低,它们的用处也越来越小。

就其值(value)而言,单一正则表达式的答案是:
(aa|bb|(ab|ba)(aa|bb)*(ba|ab))*(b|(ab|ba)(bb|aa)*a)

但是,如果我发现我的团队中有人真的使用了这样的怪物,他们就会被送回去再做一次。

这来自格雷格·培根 (Greg Bacon) 的一篇论文。见 here对于实际的内部运作。

关于string - 具有偶数个 a 和奇数个 b 的字符串的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3698625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com