題目要求:請實現乙個函式用來匹配包含』. 『和』『的正規表示式。模式中的字元』.『表示任意乙個字元,而』'表示它前面的字元(前乙個)可以出現任意次(含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...