Leetcode 之Regular Expression Matching(31)
Posted 牧马人夏峥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode 之Regular Expression Matching(31)相关的知识,希望对你有一定的参考价值。
正则表达式的匹配,还是挺难的。可根据下一个字符是不是*分为两种情况处理,需要考虑多种情况。
bool isMatch(const char *s, const char *p) { if (*p == \'\\0\')return *s == \'\\0\'; //如果下一个不是*(*可表示前一个字符的数量) //要么当前字符匹配,要么是.,不可跳过 if (*(p + 1) != \'*\') { if (*s == *p || (*p == \'.\' && *s != \'\\0\')) return isMatch(s + 1, p + 1); else return false; } else { //如果是*,则当前字符匹配|| 有一个为. //因为后面是*,即使不完全匹配也没关系,跳过即可 while (*p == *s || (*p == \'.\' && *s != \'\\0\')) { if (isMatch(s, p + 2)) return true; s++; } return isMatch(s, p + 2); } }
以上是关于Leetcode 之Regular Expression Matching(31)的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 10. Regular Expression Matching
leetcode 10 Regular Expression Matching
[LeetCode] Regular Expression Matching