regular-expression-matching

https://leetcode.com/problems/regular-expression-matching/

 

我觉得这个递归解法很好,简洁明了:

public:
    bool isMatch(string s, string p) {
        if (p.empty())    return s.empty();
        
        if ('*' == p[1])
            // x* matches empty string or at least one character: x* -> xx*
            // *s is to ensure s is non-empty
            return (isMatch(s, p.substr(2)) || !s.empty() && (s[0] == p[0] || '.' == p[0]) && isMatch(s.substr(1), p));
        else
            return !s.empty() && (s[0] == p[0] || '.' == p[0]) && isMatch(s.substr(1), p.substr(1));
    }
};

 

也可以方便的改成DP.

 

你可能感兴趣的:(regular-expression-matching)