#10 Regular Expression Match

题目链接:https://leetcode.com/problems/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

bool isMatch(char* s, char* p) {if(*p == '\0' && *s == '\0')return true;if(*p && *(p + 1) == '*') {//如果p后面为*,匹配失败需要回溯if(*p != '.' && *s != *p || *s == '\0') //如果当前字符不匹配,*只能取0,去掉p的首两个字符后递归匹配return isMatch(s, p + 2);if(isMatch(s, p + 2)) //取*为0次,如果能匹配,,返回匹配成功;return true;return isMatch(s + 1, p); //否则回溯,去掉s首字母(*至少匹配了一次)继续递归匹配}else if((*p == '.' && *s != '\0') || *p == *s)//当前字符匹配,递归比较之后序列;return isMatch(s + 1, p + 1);elsereturn false;}//注意'.'不是和所有字符都匹配,因为有可能是'\0';

但我想说,我做了一个善良的平凡女子,并且一直在爱,

#10 Regular Expression Match

相关文章:

你感兴趣的文章:

标签云: