劍指offer 正規表示式匹配

2021-10-02 03:44:07 字數 854 閱讀 1688

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

用遞迴的思路還是挺好理解的:

分為兩種情況:

1.該字元後面不是※。那對應位置必須得匹配。否則返回false。

2.該字元後面是※。又要分情況:

(1)如果與這個字元不匹配:那就跳過兩個

(2)如果與這個字元匹配:分為三種情況:不匹配,匹配乙個,匹配多個。

當然也要有遞迴出口。

#include

#include

#include

using

namespace std;

//分情況討論

/* 如果後面的字元不為*:那這一位必須匹配

如果後面的字元為*:分三種情況:

直接跳過

匹配乙個

匹配多個

*/bool

match

(char

* str,

char

* pattern)if(

*str !=

'\0'

&&*pattern ==

'\0')if

(*(pattern +1)

!='*'

)else

}elseif(

*(pattern +1)

=='*'

)else}}

intmain()

else

}

劍指offer 正規表示式匹配

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

劍指Offer 正規表示式匹配

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

劍指offer 正規表示式匹配

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