劍指offer面試題19 正規表示式的匹配

2021-10-06 18:14:26 字數 994 閱讀 9438

題目要求:請實現乙個函式用來匹配包含』. 『和』『的正規表示式。模式中的字元』.『表示任意乙個字元,而』'表示它前面的字元(前乙個)可以出現任意次(含0次)。在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串"aaa"與模式"a.a"和"abaca"匹配,但與"aa.a"和"ab*a"均不匹配。

解題方法:使用遞迴解決方法

首先第一種情況:待匹配字串為空,正則字串只能為空或者為偶數(abc* 情形),且正則字串的偶數字必須為* 限定

第二種情況:若待匹配字串不為空,當正則字串為空,則不匹配(遞迴結束條件)

遞迴:得到兩個字串的當前位字元,c1(待匹配字串的當前位)和c2(正則字串的當前位),用c3表示正則字串當前位的下一位(判斷是否為 * 分情況)

若c3是 *,看當前位置c1,c2是否匹配,若匹配,將字串減一位進行遞迴判斷

class

solution

//如果正則字串不是這種形式(a*b*)也不匹配

int i=1;

while

(ilength()

)//若滿足條件匹配空串成功

return

true;}

//情況2:字串s長度不為0,但是正則字串長度為0,直接返回錯誤

if(p.

length()

==0)return

false

;//情況3:得到s字串與p正則字串的當前位字元 分別為c1,c2.

// c3則為正則字串當前位的下乙個字串(如果存在)

char c1=s.

charat(0

),c2=p.

charat(0

),c3=

'a';

if(p.

length()

>1)

if(c3!=

'*')

else

}else

else}}

}

劍指Offer面試題19 正規表示式匹配

請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 ab ac a 匹配,但是與 aa.a 和 ab a 均不匹配 解題思路 這個題首先是對正...

劍指offer 面試題19 正規表示式匹配

請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 ab ac a 匹配,但是與 aa.a 和 ab a 均不匹配 解決 表示任意字元 表示它...

劍指Offer 面試題19(正規表示式匹配)

這裡是引用 題目描述 請實現乙個函式用來匹配包含 和 的正規表示式。模式中的字元 表示任意乙個符,而 表示它前面的字元可以出現任意次 含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 abaca 匹配,但與 aa.a 及 ab a 均不匹配。示例 incl...