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

    ‘.’匹配任意单个字符,‘*’匹配0个或多个前一字符。如果匹配整个串返回true。

    例:

    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
    bool isMatch(const char *s, const char *p) 
    {   
        if (s == NULL || p == NULL) return false;
        if (*p == '\0') return *s == '\0';
        // ".*" matches "", so we can't check (*s == '\0') here.
     
        if (*(p + 1) == '*')
        {
            // Here *p != '\0', so this condition equals with
            // (*s != '\0' && (*p == '.' || *s == *p)).
            while ((*s != '\0' && *p == '.') || *s == *p)
            {
                if (isMatch(s, p + 2)) return true;
                ++s;
            }
            
            return isMatch(s, p + 2);
        }
        else if ((*s != '\0' && *p == '.') || *s == *p)
        {
            return isMatch(s + 1, p + 1);
        }
        
        return false;
    }
  • 相关阅读:
    命令行选项
    损坏的RAID5
    Codeforces Round #600 (Div. 2)
    python 数据分析
    xor or and 线段树
    CCPC哈尔滨E题
    二维偏序
    Codeforces Round #592 (Div. 2)
    Codeforces Round #597 (Div. 2)
    pycharm 安装激活
  • 原文地址:https://www.cnblogs.com/codingmylife/p/2712561.html
Copyright © 2011-2022 走看看