演算法刷題筆記 正規表示式匹配 動態規劃

2021-10-16 22:08:47 字數 782 閱讀 5626

題目描述

給你乙個字串s和乙個字元規律p,請你來實現乙個支援 『.』 和 『*』 的正規表示式匹配。

例子:

解法構思

有關串匹配應想到利用動態規劃

如果star[j - 1] == 0,即匹配串當前字元沒有「可重複」(即星號)標記,

如果star[j - 1] == 1,即匹配串當前字元有「可重複」(即星號)標記,

其他情況 :dp[i][j] = 0

考慮邊界情況

上手程式設計

bool ismatch(string s, string p)  else star.push_back(0);

}const int n = p_.size();

// 定義dp表

vector> dp(m + 1, vector(n + 1, 0));

// 處理邊界情況

dp[0][0] = 1;

for (int i = 1; i <= n && star[i - 1] == 1; ++i)

dp[0][i] = 1;

// 構建dp表

for (int i = 1; i <= m; ++i) else }}

// dp[m][n]即為結果

return dp.back().back();

}

刷題 正規表示式匹配

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

LeetCode刷題筆記 十)正規表示式匹配

給定乙個字串 s 和乙個字元模式 p 實現支援 和 的正規表示式匹配。匹配任意單個字元。匹配零個或多個前面的元素。匹配應該覆蓋整個字串 s 而不是部分字串。說明 示例 1 輸入 s aa p a 輸出 false 解釋 a 無法匹配 aa 整個字串。示例 2 輸入 s aa p a 輸出 true ...

python刷題之 正規表示式匹配

題解簡直精妙。雖然非常費時間,回頭再補上省時間的方法,想必也很精妙 class solution def ismatch self,s str,p str bool if not p return not s first match bool s and p 0 in if len p 2 and ...