[英]RE: Number of a's is divisible by 6 and Number of b's is divisible by 8
找到一個表示由{
a,
b
}組成的字符串的正則表達式,其中a
的數字可以被6整除,b
的數量可以被8
整除。
我試圖創建一個接受這種字符串的DFA。 我的想法是使用所有余數mod 6和mod 8導致總共48個余數。 因此,DFA中的每個狀態都是一對(r, s)
,其中r
從0到6變化, s
從0到7變化。開始狀態(以及接受狀態)是(0, 0)
,我們可以很容易地給出轉換通過注意到如果我們輸入"a"
,狀態(r, s)
轉換為(r + 1, s)
並且輸入"b"
它轉換到狀態(r, s + 1)
。
然而,使用48個狀態的DFA太難了,我不確定是否可以通過手動使用DFA最小化算法來最小化這種情況。
我真的不確定我們怎么能得到一個表示這種字符串的正則表達式。
如果允許使用前瞻:
^(?=b*((ab*){6})+$)a*((ba*){8})+$
匹配字符串的示例: bbaabbaabbaabb
想法很簡單:我們知道如何搭配串具有數a
由6 S整除- ^((b*ab*){6})+$
,我們也知道如何搭配具有數字串b
小號被8整除- ^((a*ba*){8})+$
。 所以我們只是將一個正則表達式用於預測,另一個用於匹配部分。
如果您還需要匹配僅a
s或僅包含b
s的字符串,則以下正則表達式將執行以下操作:
^(?=b*((ab*){6})*$)a*((ba*){8})*$
匹配字符串的示例: aaaaaa
, bbbbbbbb
, bbaabbaabbaabb
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.