Wildcard Matching

来源:互联网 发布:python语言就业前景 编辑:程序博客网 时间:2024/05/16 08:16

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) {       bool star=false;       const char *prevS=NULL,*prevP=NULL;       while(*s!='\0'){           if(*p=='*'){              star=true;              prevP=++p;              prevS=s;           }           else{               if(*p=='?'||*p==*s) {                   s++;                   p++;               }               else{                   if(!star) return false;                   p=prevP;                   s=prevS++;               }           }       }       while(*p=='*') p++;       return *p=='\0';    }};






0 0