注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号
x
先上题干, 不明白更新starIndex的意义在于?
Given an input string (s) and a pattern (p), implement wildcard pattern matching with support for '?' and '*' where:
'?' Matches any single character.
'*' Matches any sequence of characters (including the empty sequence).
The matching should cover the entire input string (not partial).
- bool isMatch(const char *s, const char *p) {
- const char* star=NULL;
- const char* ss=s;
- while (*s){
- //advancing both pointers when (both characters match) or ('?' found in pattern)
- //note that *p will not advance beyond its length
- if ((*p=='?')||(*p==*s)){s++;p++;continue;}
- // * found in pattern, track index of *, only advancing pattern pointer
- if (*p=='*'){star=p++; ss=s;continue;}
- //current characters didn't match, last pattern pointer was *, current pattern pointer is not *
- //only advancing pattern pointer
- if (star){ p = star+1; s=++ss;continue;}
- //current pattern pointer is not star, last patter pointer was not *
- //characters do not match
- return false;
- }
- //check for remaining characters in pattern
- while (*p=='*'){p++;}
- return !*p;
- }
复制代码
|