[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 class Solution { 2 public boolean isMatch(String s, String p) { 3 int slen = s.length(), plen = p.length(); 4 int i =0, j =0; 5 int ss =0, starP =- 1; 6 while(i < slen){ 7 8 while( j < plen && p.charAt(j) == '*'){ 9 starP = j ; 10 j++; 11 ss = i; 12 } 13 14 if(j<plen&&((s.charAt(i) == p.charAt(j) || p.charAt(j) == '?'))){ 15 i++; 16 j++; 17 }else { 18 if(starP < 0){ 19 return false; 20 }else{ 21 j = starP + 1; 22 i = ++ss; 23 } 24 25 } 26 } 27 28 29 while( j < plen && p.charAt(j) == '*'){ 30 j++; 31 } 32 33 return j == plen; 34 } 35 }

浙公网安备 33010602011771号