[Leetcode 44, Hard] Wildcard match

来源:互联网 发布:广州男装网络批发 编辑:程序博客网 时间:2024/04/30 03:08

Problem:

mplement wildcard pattern matching with support for '?' and '*'.

'?' Matches any single character.'*' Matches any sequence of characters (including the empty sequence).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") → falseisMatch("aa","aa") → trueisMatch("aaa","aa") → falseisMatch("aa", "*") → trueisMatch("aa", "a*") → trueisMatch("ab", "?*") → trueisMatch("aab", "c*a*b") → false

Analysis:

The solution comes from http://yucoding.blogspot.com/2013/02/leetcode-question-123-wildcard-matching.html 

Solutions:

C++:

    bool isMatch(string S, string P)     {        const char *s = S.c_str();        const char *p = P.c_str();        const char* star = NULL;        const char* ss = s;         while (*s){            if ((*p == '?')||(*p == *s)) {                s++;                p++;                continue;            }            if (*p == '*') {                star = p++;                 ss = s;                continue;            }                        if (star) {                 p = star+1;                 s = ++ss;                continue;            }                        return false;        }        while (*p == '*')            p++;        return !*p;    }
Java:


Python:

0 0
原创粉丝点击