題意理解
給頂乙個模式串,.表示匹配任意乙個字母,*表示重複0次或多次前面乙個字母。對於任乙個字串是否和模式串匹配。
問題分析
遞迴非.*情況逐個字母匹配即可
.看成乙個字母,直接匹配;
*比較複雜,按照語法說明,可以匹配0個前面字母,或1個,或多個情況
思路是 如果模式串第二個字元是*,那麼,模式串可以忽略掉前面那個字母和*,這樣的模式串匹配上也可以;還有一種情況是*前面的字母和原串第乙個字母匹配,源串去掉第乙個字母和完整模式串匹配也可以。 其他情況下,逐個匹配就好了。
其他遞迴是乙個好思路,好好理解,大有好處。
鏈結
bool ismatch(string s, string p)
bool first_match = (!s.empty()) && ((s[0] == p[0]) || (p[0] == '.')); //第乙個字元一定存在,判斷是否相等,&& || 優先順序相同,括號必須加
if (p.size() >= 2 && p[1] == '*')
else
return false;
}
力扣10正規表示式匹配
def ismatch text,pattern bool if not pattern return not text first match bool text and pattern 0 in if len pattern 2 and pattern 1 return ismatch text...
力扣 困難 10 正規表示式匹配
給你乙個字串 s 和乙個字元規律 p,請你來實現乙個支援 和 的正規表示式匹配。匹配任意單個字元 匹配零個或多個前面的那乙個元素 所謂匹配,是要涵蓋 整個 字串 s的,而不是部分字串。說明 s 可能為空,且只包含從 a z 的小寫字母。p 可能為空,且只包含從 a z 的小寫字母,以及字元 和 示例...
力扣LeetCode 10 正規表示式匹配
給你乙個字串 s 和乙個字元規律 p,請你來實現乙個支援 和 的正規表示式匹配。匹配任意單個字元 匹配零個或多個前面的那乙個元素 所謂匹配,是要涵蓋 整個 字串 s的,而不是部分字串。說明 s 可能為空,且只包含從 a z 的小寫字母。p 可能為空,且只包含從 a z 的小寫字母,以及字元 和 示例...