标签:pat nullptr 记录 logs turn 经典 特殊情况 处理 思想
剑指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; } };
标签:pat nullptr 记录 logs turn 经典 特殊情况 处理 思想
原文地址:http://www.cnblogs.com/chenhuan001/p/7395665.html