zoukankan      html  css  js  c++  java
  • [string]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
    class Solution {
    public:
        bool isMatch(string& s,int sSize,int startS,string& p,int pSize,int startP)
        {
            if(startS==sSize){
                while(startP<pSize){
                    if(p[startP]!='*' && (startP+1>=pSize || p[startP+1]!='*')){
                        break;
                    }
                    startP++;
                }
                return startP==pSize? true:false;
            }
            if(startP+1<pSize && p[startP+1]=='*'){
                int j=startP+1;
                while(j<pSize && p[j]=='*') j++;
                if(isMatch(s,sSize,startS,p,pSize,j)) return true;
                while(startS<sSize && (s[startS]==p[startP] || p[startP]=='.')){
                    if(isMatch(s,sSize,++startS,p,pSize,j)) return true;
                }
                return false;
            }
            if(p[startP]=='.'||p[startP]==s[startS]){
                return isMatch(s,sSize,startS+1,p,pSize,startP+1);
            }
            return false;
        }
        bool isMatch(string s, string p) {
            return isMatch(s,s.size(),0,p,p.size(),0);
        }
    };
    /*
    "aaaaddcbbeefggh"
    "a*ddcb*eefc*ggh**"
    */

     通配符匹配:http://www.cnblogs.com/zengzy/p/5019079.html

  • 相关阅读:
    Dice 5 ==> dice 7
    Dice 7 ==> dice 5
    100 floors 2 eggs
    Determine overlapping rectangles
    Product of integers
    Maximum profit of stocks
    样式表
    20170508
    2017年05月07
    The second day of school
  • 原文地址:https://www.cnblogs.com/zengzy/p/5023753.html
Copyright © 2011-2022 走看看