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 };
  • 相关阅读:
    python机器学习基础教程-鸢尾花分类
    LaTeX实战经验:如何写算法
    Latex公式最好的资料
    BibTex (.bib) 文件的注释
    Latex中参考文献排序
    LATEX双栏最后一页如何平衡两栏内容
    Latex强制图片位置
    Endnote输出Bibtex格式
    redis学习
    20180717
  • 原文地址:https://www.cnblogs.com/neverland0718/p/11239651.html
Copyright © 2011-2022 走看看