正則表達式匹配

Implement regular expression matching with support for?'.'?and?'*'.

'.' Matches any single character.

'*' Matches zero or more of the preceding element.

The matching should cover the entire input string (not partial).

The function prototype should be: bool isMatch(const char *s, const char *p)

Some examples:

isMatch("aa","a") → false

isMatch("aa","aa") → true

isMatch("aaa","aa") → false

isMatch("aa", "a*") → true

isMatch("aa", ".*") → true

isMatch("ab", ".*") → true


isMatch("aab", "c*a*b") → true

leetcode第十題,拿C++寫的時候發現初始化數組如果只寫一個值是不行的,其他元素的內存是臟的,需要寫成 {} 方能初始化為默認值。

這道題用的是動態編程,確認最優子結構即可,topdown或者 bottomup都可以。

兩個字符串 s 和 p,子問題就是是否子字符串也匹配,注意,s[0]可以不和p[0]匹配。粗略看,假設s長度為lenS,p長度為lenP,那么算法的時間復雜度應該是O(lenS*lenT) - O(n**2)。

todo:自定向下的方法,自底向上的方法,純遞歸就不寫了。

設置一個表 memo[lenS+1][lenP+1] 來記錄子字符串s[i:lenS],其中 i in range(0, lenS)。

設空字符串與空字符串默認匹配,即s[lenS:]與 p[lenP:] 是匹配的,作為哨兵。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 正則表達式在 js 中的應用主要用到3個方法 exec():為指定的一段字符串執行搜索匹配操作。它的返回值是一個數...
    稀里糊涂姑娘閱讀 25,209評論 1 3
  • 前提是朋友有個需求幫忙,集成百度地圖得出了公交路線方案(字符串),但只需要路線方案的公交路數。第一時間就考慮了字符...
    huifeidelele閱讀 2,683評論 0 2
  • 今天在寫一個項目的時候用到了正則表達式;將正則表達式與字典中的 key 進行匹配,并將匹配到的字符串用 key 對...
    TobyoTenma閱讀 15,956評論 0 33
  • 吾本秦嶺游山客,烏帽青衣,暢行關中地。 落盡黃葉秋寒氣,芳草萋萋愁迷離。 坐望平疇念嬌媚,日暮青山,幽思欲憔悴。 ...
    鄧文偉閱讀 257評論 0 1
  • 孔夫子深得當官之味,有人質疑他的專業知識,他立刻就表示我這樣做才表明具備了專業能力。 一則表示事必躬親,什么都仔細...
    海水藍閱讀 195評論 0 0