使用dfs思想:
進行匹配時:可能出現以下情況:
case1:pidx的下乙個字元為'*』
,此時有可能出現兩種情況:
1)pidx前面的字元只出現0次,此時直接去比較helper(sidx,pidx+2)
2):pidx前面的字元只出現1次或多次時,也就是當首字元匹配時再去遞迴比較下乙個字元:if(p.charat(pidx)==s.charat(sidx)) then 再去比較helper(sidx+1,pidx)
只要這兩種情況有1個成立就return true;
case2:pidx的下乙個字元不為'*』
時,這裡也有兩種情況:
1)pidx所指字元為正常字元:直接比較if(p.charat(pidx)==s.charat (sidx)) then 再去比較helper(sidx+1,pidx+1)
2)pidx所指字元為』.』:則直接比較下乙個字元:helper(sidx+1,pidx+1)
class solution
//這裡前面要加上sidx0)return false;
return helper(s,0,p,0);//注意這裡即使s串為空,也有可能匹配p串,但p串如果為空的話,如果s串非空的話直接return false;
}}
劍指 19 正規表示式匹配
題目描述 演算法分析 1.如果字串第乙個字元和模式中的第乙個字元相匹配,那麼字串和模式都後移乙個字元,然後匹配剩餘的。2.如果字串第乙個字元和模式中的第乙個字元相不匹配,直接返回false。如果字串第乙個字元跟模式第乙個字元不匹配,則模式後移2個字元,繼續匹配。如果字串第乙個字元跟模式第乙個字元匹配...
劍指Offer 19 正規表示式匹配
之前做這個題的時候特別凌亂,但這次會好很多,把思路分享出來,以及邊界的確定 思路 我們用倆個索引來控制字串和模式串已經匹配到達的位置,index1和index2,這個問題就難在有 的位置,我們需要考慮下乙個位置為 時候怎麼處理 1.模式串的index2下乙個位置為 1 字串的index1位置與模式串...
劍指offer19 正規表示式匹配
2.如果第二位是 第一位如果匹配,則三種情況 有一種為true,則結果為true 3.其餘情況一位一位比較 class solution s,pattern都是字串 defmatch self,s,pattern write code hereif len s 0 andlen pattern 0 ...