請實現乙個函式用來匹配包括』.『和』 * 『的正規表示式。模式中的字元』.'表示任意乙個字元,而 』 * 』 表示它前面的字元可以出現任意次(包含0次)。 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串"aaa"與模式"a.a"和"ab * ac * a"匹配,但是與"aa.a"和"ab*a"均不匹配
本題的主要思路如下:
首先判斷字串或模式為空,若是直接返回false;
否則, 判斷字串和模式首元素是否都0,若是直接返回true;
若模式首元素被空,第2個元素為』*』,那麼則判斷字串與模式串指標+2對應的子串是否匹配,匹配則返回true;
若字串和模式首元素相等或者模式首元素為』.』,那麼判斷字串和模式指標加1對應子串是否匹配,若是則返回true,若模式的第二個元素為』*』,並且字串指標+1對應的的子串與模式匹配則返回true;否則返回false;
#include
using
namespace std;
class
solution
return
this
->
matchcore
(str,pattern);}
bool
matchcore
(char
* str,
char
* pattern)
if(pattern[0]
!=0&& pattern[1]
=='*')}
if(str[0]
== pattern[0]
||(str[0]
!=0&& pattern[0]
=='.'))
if(pattern[1]
=='*'
&&this
->
matchcore
(str+
1,pattern))}
return
false;}
};intmain()
return0;
}
劍指offer52 正規表示式匹配
請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 abaca 匹配,但是與 aa.a 和 ab a 均不匹配 參考leetcode10.正規...
劍指offer(52)正規表示式匹配
問題描述 請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 ab ac a 匹配,但是與 aa.a 和 ab a 均不匹配。思路 首先判斷兩...
劍指offer 52 正規表示式匹配
請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 ab ac a 匹配,但是與 aa.a 和 ab a 均不匹配 分類討論各種情況 1 特殊...