题解:Regular Expression Matching

来源:互联网 发布:python 实现http接口 编辑:程序博客网 时间:2024/06/06 01:36

题目:

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

主要运用递归,一步一步地去看字串是不是匹配的,中间的方法其实比较常见。但是这道题的写出其实还是参照了下别人的方法,理解了比较长的时间,花费的时间大多在这个研习上,感觉递归虽然方便但是这个可能不是特别优秀的算法,但是能通过judge就当作可行了吧

bool isMatch(string s, string p) {    const char* s0 = s.c_str();    const char* p0 = p.c_str();     if (*(p0 + 1) == '*')    {        while ((*s0 != '\0' && *p0 == '.') || *s0 == *p0) {            if (isMatch(s0, p0 + 2))return true;            s0++;         }        return isMatch(s0, p0 + 2);    }    else if ((*s0 != '\0' && *p0 == '.') || *s0 == *p0) {        return isMatch(s0 + 1, p0 + 1);    }     return false;    }



0 0
原创粉丝点击