您的位置:首页 > 其它

Wildcard Matching

2015-08-16 20:10 459 查看
非常巧的一个解法,记录一下

public class Solution {
public boolean isMatch(String str, String pattern) {
//非常巧
int s = 0, p = 0, match = 0, starIdx = -1;
while (s < str.length()){
// advancing both pointers
if (p < pattern.length()  && (pattern.charAt(p) == '?' || str.charAt(s) == pattern.charAt(p))){
s++;
p++;
}
// * found, only advancing pattern pointer
else if (p < pattern.length() && pattern.charAt(p) == '*'){
starIdx = p;
match = s;
p++;
}
// last pattern pointer was *, advancing string pointer
else if (starIdx != -1){
p = starIdx + 1;
match++;
s = match;
}
//current pattern pointer is not star, last patter pointer was not *
//characters do not match
else return false;
}

//check for remaining characters in pattern
while (p < pattern.length() && pattern.charAt(p) == '*')
p++;

return p == pattern.length();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: