Wildcard Matching

来源:互联网 发布:网络尿性的意思 编辑:程序博客网 时间:2024/05/29 12:14

Implement wildcard pattern matching with support for '?' and '*'.

'?' Matches any single character.'*' Matches any sequence of characters (including the empty sequence).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", "*") → trueisMatch("aa", "a*") → trueisMatch("ab", "?*") → trueisMatch("aab", "c*a*b") → false
class Solution {public:bool isMatch(const char *s, const char *p) {const char *sl = 0, *pl = 0;while(*s != '\0'){if (*s == *p || '?' == *p){s++;p++;}else if ('*' == *p){sl = s;pl = p;p++;}else if (pl != 0){s = ++sl;p = pl + 1;}elsereturn false;}while('*' == *p)p++;return '\0' == *p;}};

回溯加减枝




0 0