题解:
这道题无法使用动态规划,因为不知道字符的长度;
嗯嗯,正则匹配我还是稀里糊涂 的,等弄明白了,再补充 ~待更新。。。
1 class Solution { 2 public: 3 bool match(char* str, char* pattern) 4 { 5 if (str == nullptr || pattern == nullptr)return false; 6 return matchCore(str, pattern); 7 } 8 bool matchCore(const char *str, const char *pattern) 9 { 10 if (*str == ‘\0‘ && *pattern == ‘\0‘)return true; 11 if (*str != ‘\0‘&& *pattern == ‘\0‘)return false; 12 if (*(pattern + 1) == ‘*‘) 13 { 14 if (*pattern == *str || (*pattern == ‘.‘ && *str != ‘\0‘)) 15 return matchCore(str + 1, pattern + 2) || //移动到下一个位置 16 matchCore(str + 1, pattern) || // 待在自己的位置不动 17 matchCore(str, pattern + 2);//忽略一个‘*’ 18 else 19 return matchCore(str, pattern + 2);//忽略一个‘*‘ 20 } 21 if (*str == *pattern || (*pattern == ‘.‘ && *str != ‘\0‘)) 22 return matchCore(str + 1, pattern + 1); 23 return false; 24 } 25 };
原文:https://www.cnblogs.com/zzw1024/p/11657690.html