LeetCode#44. Wildcard Matching
阿新 • • 發佈:2019-02-19
- 題目:給定兩個字串,s為待匹配字串,p為模式字串
- 匹配規則: ‘?’能匹配任何單個字元,’*’能匹配任何字元序列包括空字元null
- 難度:Hard
- 思路:一開始思路方向是有的,但是分情況討論沒有理清楚,最後忍不住看了discuss,在原始碼上稍微優化了一下
- 程式碼:
public class Solution {
public boolean isMatch(String s, String p) {
int len1 = 0;//s的長度計數器
int len2 = 0;//p的長度計數器
int starIndex = -1;
int match = 0;//加上match是因為*可以匹配null,但是?只能匹配單個字元
while(len1 < s.length()){
if(len2 < p.length() && (p.charAt(len2) == '?' || (s.charAt(len1) != '*' &&s.charAt(len1) == p.charAt(len2)))){
len1++;
len2++;
}else if(len2 < p.length() && p.charAt(len2) == '*' ){
starIndex = len2;
match = len1;
len2++;
}else if(starIndex != -1){
len2 = starIndex + 1;
match++;
len1 = match;
}else{
return false;
}
}
while(len2 < p.length() && p.charAt(len2) == '*' ){
len2++;
}
return len2 == p.length();
}
}