簡體   English   中英

RE:a的數量可以被6整除,b的數量可以被8整除

[英]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})+$

正則表達式可視化

Debuggex演示

匹配字符串的示例: bbaabbaabbaabb

想法很簡單:我們知道如何搭配串具有數a由6 S整除- ^((b*ab*){6})+$ ,我們也知道如何搭配具有數字串b小號被8整除- ^((a*ba*){8})+$ 所以我們只是將一個正則表達式用於預測,另一個用於匹配部分。

如果您需要匹配僅a s或僅包含b s的字符串,則以下正則表達式將執行以下操作:

^(?=b*((ab*){6})*$)a*((ba*){8})*$

正則表達式可視化

匹配字符串的示例: aaaaaabbbbbbbbbbaabbaabbaabb

Debuggex演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM