LeetCode:Regular Expression Matching

来源:互联网 发布:巫师三优化 编辑:程序博客网 时间:2024/06/13 04:22

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

由于只有“.”和“*”,直接想法很简单,判定下一个是否为“*”,如果不为“*”则判定当前是否为‘.’(或者任意字符),如果下一个为“*”则需对之后从0个到最多个重复的多种情况下判定

,最后判定一下s为空的情况。

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





0 0
原创粉丝点击