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") ? false
isMatch("aa","aa") ? true
isMatch("aaa","aa") ? false
isMatch("aa", "*") ? true
isMatch("aa", "a*") ? true
isMatch("ab", "?*") ? true
isMatch("aab", "c*a*b") ? false
递归实现算法对于大数据会超时
bool isMatch(const char *s, const char *p) { // Start typing your C/C++ solution below // DO NOT write int main() function if(*p=='\0') return *s=='\0'; if(*p=='*') { while(*s!='\0') { if(isMatch(s++,p+1)) return true; } return isMatch(s,p+1); } else { if(*s!='\0'&&(*s==*p||*p=='?')) return isMatch(s+1,p+1); return false; } }
大数据处理选择迭代算法,以*为一个匹配断点
bool isMatch(const char *s, const char *p) { // Start typing your C/C++ solution below // DO NOT write int main() function bool hasstar=false; const char *ps=s,*pp=p; while(*ps) { switch(*pp) { case '?': ps++; pp++; break; case '*': hasstar=true; s=ps; p=pp+1; pp=p; break; default: if(*ps!=*pp) { if(hasstar) { s++; ps=s; pp=p; } else return false; } else { ps++; pp++; } } } while(*pp=='*') pp++; return *pp==0; }
本文介绍了一种通配符匹配算法,支持 '?' 和 '*' 的匹配,其中 '?' 匹配任意单个字符,'*' 匹配任意序列的字符。文章提供了两种实现方式:递归实现与迭代实现,并通过示例说明了如何判断字符串是否符合指定的通配符模式。
1377

被折叠的 条评论
为什么被折叠?



