44--通配符匹配
通配符匹配
问题描述
给定一个字符串 (s) 和一个字符模式 (p) ,实现一个支持 ‘ ? ‘ 和 ‘ * ‘ 的通配符匹配。
‘ ? ‘ 可以匹配任何单个字符。
‘ * ‘ 可以匹配任意字符串(包括空字符串)
s 可能为空,且只包含从 a-z 的小写字母。
p 可能为空,且只包含从 a-z 的小写字母,以及字符 ? 和 *代码实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18var star=-1, match=0;
var sp=0, pp=0;
while(sp < s.length){
if(pp<p.length && (s[sp] == p[pp] || p[pp] =="?")){
sp++;
pp++;
}else if(pp<p.length && p[pp] == "*"){
star = pp;
match = sp;
pp++;
}else if(star != -1){
pp = star + 1;
match++;
sp = match;
}else return false;
}
while (pp < p.length && p[pp] == '*') pp++;
return pp == p.length;
本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Charles's Blog!