劍指offer 52 正規表示式匹配

2021-08-24 17:38:15 字數 1038 閱讀 8005

請實現乙個函式用來匹配包括』.『和』 * 『的正規表示式。模式中的字元』.'表示任意乙個字元,而 』 * 』 表示它前面的字元可以出現任意次(包含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 特殊...