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

    Solution: Both of the two solutions are from http://leetcode.com/2011/09/regular-expression-matching.html .

    class Solution {
    public:
        bool isMatch(const char *s, const char *p) {
            if (*p == '') return *s == '';
            
            if (*(p+1) == '*') { // next is '*'
                while ((*s == *p || *p == '.') && *s != '') {
                    if (isMatch(s, p+2))
                        return true;
                    s++;
                }
                return isMatch(s, p+2);
            }
            
            if (*s == '') return false;
            return (*s == *p || *p == '.') && isMatch(s+1, p+1);
        }
    };
  • 相关阅读:
    Android_自定义适配器
    Android_ListView
    Android_布局
    Android_基础控件
    Android_基础
    PHP框架_ThinkPHP数据库
    PHP框架_ThinkPHP基础
    PHP框架_Smarty_实现登录功能
    PHP框架_Smarty
    PHP文件上传
  • 原文地址:https://www.cnblogs.com/zhengjiankang/p/3682056.html
Copyright © 2011-2022 走看看