劍指offer 面試題53 正規表示式匹配

2021-09-21 17:59:27 字數 908 閱讀 6044

劍指offer:面試題53——正規表示式匹配

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

思路:匹配函式可以遞迴重複呼叫,因此可以避免了雙層迴圈。

這裡有幾種情況,

當串中當前字元的下一位是』*『,

如果串當前位和模式串中當前位(星號前的一位)相同,

或者模式串當前位為".",下一位為星號,那麼當前可以略過一位匹配串中的當前位,模式串中的星號可以被略過也可以不被略過,也可以不略過匹配串的當前位,略過模式串中的星號,然後對串進行繼續的匹配。

如果下一位是星號,但當前匹配串和模式串字元不同,則直接略過星號

class solution if(

*str==

*pattern||

(*pattern==

'.'&&

*str!=

'\0'))

return

matchcore

(str+

1,pattern+1)

;return false;

}public:

bool match

(char

* str,

char

* pattern)

;int m_status=g_valid;

if(str==

null

||pattern==

null

)return

matchcore

(str,pattern);}

};

劍指offer 面試題53 正規表示式匹配

題目 請實現乙個函式用來匹配包含 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 匹配,但與 aa.a 及 ab a 均不匹配。思路 我們從頭遍歷字串與模式,如果第乙個字串...

劍指Offer 面試題53 正規表示式匹配

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

劍指offer面試題7

面試題7 用兩個棧實現佇列 using namespace std template class cqueue 預備知識 佇列 佇列也是一種常見的資料結構 特點是先進先出 fifo 在stl中有stack和queue兩個容器 template class stack 成員函式 empty size ...