※剑指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:正则表达式匹配的主要内容,如果未能解决你的问题,请参考以下文章

剑指 Offer 19. 正则表达式匹配 的详细题解

剑指OFFER 正则表达式匹配

《剑指offer》 面试题53 :正则表达式匹配 Java

LeetCode(剑指 Offer)- 19. 正则表达式匹配

剑指Offer52:正则表达式匹配(Java)

剑指offer-正则表达式匹配