Regular Expression Matching -- leetcode

来源:互联网 发布:软件系统总体设计方案 编辑:程序博客网 时间:2024/06/09 20:07

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") → falseisMatch("aa","aa") → trueisMatch("aaa","aa") → falseisMatch("aa", "a*") → trueisMatch("aa", ".*") → trueisMatch("ab", ".*") → trueisMatch("aab", "c*a*b") → true


此题主要是 * 需要特殊处理。

它既能使其前驱字符匹配多个,同时也能匹配0个字符。


class Solution {public:   bool isMatch(const char *s, const char *p) {        if (!*p) return !*s;        if (*(p+1) == '*') {                while (*s) {                        if (isMatch(s, p+2))                                return true;                        if (*p == *s || *p =='.') {                                ++s;                        }                        else {                                return false;                        }                }                return isMatch(s, p+2);        }        else if (*s == *p || (*s && *p == '.'))                return isMatch(++s, ++p);        else                return false;   }};


0 0