劍指 19 正規表示式匹配

2021-08-20 16:24:05 字數 799 閱讀 9166

題目描述

演算法分析

1. 如果字串第乙個字元和模式中的第乙個字元相匹配,那麼字串和模式都後移乙個字元,然後匹配剩餘的。

2. 如果字串第乙個字元和模式中的第乙個字元相不匹配,直接返回false。

如果字串第乙個字元跟模式第乙個字元不匹配,則模式後移2個字元,繼續匹配。如果字串第乙個字元跟模式第乙個字元匹配,可以有3種匹配方式:

1. 模式後移2字元,相當於x*被忽略;

2. 字串後移1字元,模式後移2字元;

3. 字串後移1字元,模式不變,即繼續匹配字元下一位,因為*可以匹配多位。

提交**:

class solution 

bool matchcore(char* str, char* pattern)

if(*str == *pattern || (*pattern == '.' && *str != '\0'))

return matchcore(str + 1, pattern + 1);

return false;

}};

測試**:

// ********************測試**********************

void test(char* testname, char* string, char* pattern, bool expected)

int main(int argc, char* argv)

劍指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 ...

劍指offer 19 正規表示式匹配

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