※剑指offer系列41:正则表达式匹配
Posted 熊妮妮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了※剑指offer系列41:正则表达式匹配相关的知识,希望对你有一定的参考价值。
做这个题目一定要思路清晰,各种情况都要考虑完善。
分为两种情况
1.其中有一个到结尾了
2.两个都没结尾,这里以它的下一位是否为*作为判断条件。
1 class Solution { 2 public: 3 bool match(char* str, char* pattern) 4 { 5 if (str == NULL || pattern == NULL) 6 return false; 7 return matchcore(str, pattern); 8 } 9 bool matchcore(char* str, char* pattern) 10 { 11 //第一种情况 12 if (*str == ‘\0‘&&*pattern == ‘\0‘) 13 return true; 14 if (*str != ‘\0‘&&*pattern == ‘\0‘) 15 return false; 16 17 //第二种情况 18 if (*(pattern + 1) == ‘*‘) 19 { 20 if (*str == *pattern || (*str != ‘\0‘&&*pattern == ‘.‘)) 21 return matchcore(str + 1, pattern) ||//有n个不需要的数字需要用*消除 22 matchcore(str, pattern + 2);//跳过这个数字和后面的星星,即出现0次 23 else 24 return match(str, pattern + 2);//跳过这个数字和后面的星星,即出现0次 25 26 } 27 if (*str == *pattern|| (*str != ‘\0‘&&*pattern == ‘.‘))//注意这里的条件语句 28 //两个数相同和没有结尾的情况下模式出现‘.‘是一样的 29 return matchcore(str + 1, pattern + 1); 30 return false; 31 } 32 };
以上是关于※剑指offer系列41:正则表达式匹配的主要内容,如果未能解决你的问题,请参考以下文章