leetcode -- Wildcard Matching
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
[]
1 public boolean isMatch(String s, String p) { 2 int sLen = s.length(), pLen = p.length(); 3 int i = 0, j = 0; 4 int ss = 0, starP = -1; 5 while (i < sLen) { 6 7 while(j < pLen && p.charAt(j) == '*'){ 8 starP = j++; 9 ss = i; 10 } 11 12 if((j == pLen) || (s.charAt(i) != p.charAt(j) && p.charAt(j) != '?')){ 13 if(starP < 0){ 14 return false; 15 } else { 16 j = starP + 1; 17 i = ++ss; 18 } 19 } else{ 20 i++; 21 j++; 22 } 23 24 25 } 26 while (j < pLen && p.charAt(j) == '*') { 27 j++; 28 } 29 return j == pLen; 30 }
http://blog.sina.com.cn/s/blog_b9285de20101gw2x.html
http://yucoding.blogspot.com/2013/02/leetcode-question-123-wildcard-matching.html
浙公网安备 33010602011771号