我是否可以获得如何为字母{a,b}构建正则表达式的提示,该字母接受所有字符串:
a
&{39}和b
。a
&{39}和b
的数量之间的差异永远不会超过两个。例如:
aaa
不是有效的(因为有a
超过b
' s aa
无效(a
和b
' s的数量不相同aababb
有效(a
和b
的相同数量以及a
的累计数量&#39}或b
' s永远不会比另一个多三个)bbaabbaa
有效答案 0 :(得分:2)
如果仅存在第一个约束(have the same number of a's and b's
)则不可能。由于第二个约束,可以解决您的问题。
首先想到完成工作的有限自动机(我把它作为练习留给你)然后将其转换为正则表达式会更容易。
转换的正则表达式将是:
[ (((a | (aab) (ab)*) b)* (((b | bba) (ba)*) a)* ]*
(也许它可以简化,也可以留给你作为练习)。