zoukankan      html  css  js  c++  java
  • Regular Expression Matching (LeetCode)

    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


    下面是在网上看到的一段质量非常高的代码

     1 class Solution {
     2 public:
     3     bool isMatch(const char *s, const char *p) {
     4         if(0==*p)  return 0==*s;
     5         
     6         if('*'==*(p+1))
     7         {
     8             while(*s == *p || ('.' == *p && 0 != *s)) 
     9             {
    10                 if(isMatch(s++,p+2))  return true;
    11             }
    12             
    13             return isMatch(s,p+2);
    14         }
    15         else
    16         {
    17             if(*s==*p||('.'==*p&&0!=*s))
    18             {
    19                 return isMatch(s+1,p+1);
    20             }
    21             return false;
    22         }
    23     }
    24 };
  • 相关阅读:
    软件测试常见概念
    Apollo简介及工作原理
    bug的编写技巧与级别划分
    native与H5优缺点及H5测试
    优惠券测试
    go语言-for循环
    go语言-流程控制--if
    go语言-二进制与位运算
    cookie和session
    AJAX
  • 原文地址:https://www.cnblogs.com/sqxw/p/3934922.html
Copyright © 2011-2022 走看看