zoukankan      html  css  js  c++  java
  • ※剑指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 == ''&&*pattern == '')
    13             return true;
    14         if (*str != ''&&*pattern == '')
    15             return false;
    16 
    17         //第二种情况
    18         if (*(pattern + 1) == '*')
    19         {
    20             if (*str == *pattern || (*str != ''&&*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 != ''&&*pattern == '.'))//注意这里的条件语句
    28                                                                                         //两个数相同和没有结尾的情况下模式出现'.'是一样的
    29             return  matchcore(str + 1, pattern + 1);
    30         return false;
    31     }
    32 };
  • 相关阅读:
    P1032 字串变换
    P3203 [HNOI2010]弹飞绵羊
    P3690 【模板】Link Cut Tree (动态树)
    P2147 [SDOI2008]洞穴勘测
    P3950 部落冲突
    Codeforces Round #469 Div. 2题解
    线段树
    SDOI2018退役记
    4.1模拟题
    无旋Treap
  • 原文地址:https://www.cnblogs.com/neverland0718/p/11239651.html
Copyright © 2011-2022 走看看