Regular Expression Matching

来源:互联网 发布:金砖国家成立意义知乎 编辑:程序博客网 时间:2024/05/16 04:54

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

昨下午做第一遍,思绪越做越乱,然后今天上午做第二遍,开始有测试会超时,删除下面这种不需要再往下测的情况后终于通过

if (*p == '*' && isMatch(s, p+1)) return true;


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









0 0
原创粉丝点击