zoukankan      html  css  js  c++  java
  • Regular Expression Matching

    Implement regular expression matching with support for '.' and '*'.

    '.' Matches any single character.
    '*' Matches zero or more of the preceding element.
    
    The matching should cover the entire input string (not partial).
    
    The function prototype should be:
    bool isMatch(const char *s, const char *p)
    
    Some examples:
    isMatch("aa","a") → false
    isMatch("aa","aa") → true
    isMatch("aaa","aa") → false
    isMatch("aa", "a*") → true
    isMatch("aa", ".*") → true
    isMatch("ab", ".*") → true
    isMatch("aab", "c*a*b") → true
    注意test:aa,a*;aaa,a*a;aaa,a*ac;

     1 bool isMatch(char* s, char* p) {
     2     if(*p=='') return *s=='';
     3     if(*(p+1)=='*')
     4     {
     5         while(*s==*p||((*p=='.')&&(*s!='')))
     6         {
     7             if(isMatch(s,p+2)) return true;
     8             s++;
     9         }
    10         return isMatch(s,p+2); //若为false,则当s不断++至‘’时,无法再次与p匹配,如aa,a*,当s==''时,仍需与p+2匹配,输出正确结果
    11     }
    12     else
    13     {
    14         if(*s==*p||((*p=='.')&&(*s!='')))
    15             return isMatch(s+1,p+1);
    16         return false;
    17     }
    18 }
  • 相关阅读:
    创建二叉树
    并查集
    opn模块
    【ES6】map、reduce、filter、sort、箭头函数、class继承、yield
    css应用视觉设计
    json解决ajax跨域的原理
    flex盒子布局
    前后台交互ajax请求模块
    react后台项目开发(一)
    高阶函数&&高阶组件(二)
  • 原文地址:https://www.cnblogs.com/zl1991/p/4733382.html
Copyright © 2011-2022 走看看