首页 > 代码库 > leetcode.10------------Regular Expression Matching
leetcode.10------------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") → false
isMatch("aa","aa") → true
isMatch("aaa","aa") → false
isMatch("aa", "a*") → true
isMatch("aa", ".*") → true
isMatch("ab", ".*") → true
isMatch("aab", "c*a*b") → true
方法:递归
递归逐个字符比较:每次要比较的时候先判断比较的字符后面的一个字符是不是‘*‘, 例如A=aa和B=a**b是否匹配的时候,在判断第一个字符是否匹配之前先判断B中第二字符是否为‘*‘。
class Solution { public: bool isMatch(const char *s, const char *p) { if (*p == '\0') return *s == '\0'; //next char is not '*':must match current character if (*(p + 1) != '*') { if (*p == *s || (*p == '.'&&*s != '\0')) return isMatch(s + 1, p + 1); else return false; } //next char is '*' if (*(p + 1) == '*') { while (*p == *s || (*p == '.') && *s != '\0') { if (isMatch(s, p + 2)) return true; s++; } return isMatch(s, p + 2); } } };
leetcode.10------------Regular Expression Matching
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。