正则表达式匹配
Posted chenhuan001
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式匹配相关的知识,希望对你有一定的参考价值。
剑指offe第19题,很经典。
如果不用递归的思维做,会很麻烦。
因为对于.*、*.、*..等一些特殊情况处理会非常麻烦。
所以采用递归的思路。(如果加上的动态规划思想,记录dp[m][n]表示str + m与pattern + n是否能正确匹配。就可以把复杂度控制在O(n*n)。
class Solution { public: bool match(char* str, char* pattern) { if (str == nullptr || pattern == nullptr) { return false; } if (*str == ‘\0‘ && *pattern == ‘\0‘) { return true; } if (*pattern == ‘\0‘) { return false; } if ( *(pattern + 1) == ‘*‘) { if (*pattern == *str || (*pattern == ‘.‘ && *str != ‘\0‘)) { return match(str + 1, pattern) || match(str, pattern + 2) || match(str + 1, pattern + 2); } else { return match(str, pattern + 2); } } if (*pattern == *str || (*pattern == ‘.‘ && (*str) != ‘\0‘)) { return match(str + 1, pattern + 1); } return false; } };
以上是关于正则表达式匹配的主要内容,如果未能解决你的问题,请参考以下文章