請實現乙個函式用來匹配包括 . 和 ※ 的正規表示式。模式中的字元』.'表示任意乙個字元,而※表示它前面的字元可以出現任意次(包含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 均不匹配.分析 觀察模式串中第...