題目描述
給你乙個字串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 ...