首页 > 代码库 > Regular Expression Matching -- leetcode
Regular Expression Matching -- leetcode
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
此题主要是 * 需要特殊处理。
它既能使其前驱字符匹配多个,同时也能匹配0个字符。
class Solution { public: bool isMatch(const char *s, const char *p) { if (!*p) return !*s; if (*(p+1) == '*') { while (*s) { if (isMatch(s, p+2)) return true; if (*p == *s || *p =='.') { ++s; } else { return false; } } return isMatch(s, p+2); } else if (*s == *p || (*s && *p == '.')) return isMatch(++s, ++p); else return false; } };
Regular Expression Matching -- leetcode
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。