| 123456789101112131415161718192021 | 
							- class Solution {
 
-     public boolean isMatch(String s, String p) {
 
-         char[] chs = s.toCharArray();
 
-         char[] chp = p.toCharArray();
 
-         boolean[][] dp = new boolean[chs.length + 1][chp.length + 1];
 
-         dp[0][0] = true;
 
-         for (int i = 1; i <= chp.length && chp[i - 1] == '*'; i++)
 
-             dp[0][i] = true;
 
-         // dp[i][j] = dp[i-1][j-1], if chs[i-1] == chp[j-1] or chp[j-1] == '?'
 
-         //          = dp[i-1][j] || dp[i][j-1], if chp[j-1] == '*'
 
-         for (int i = 1; i <= chs.length; i++) {
 
-             for (int j = 1; j <= chp.length; j++) {
 
-                 if (chp[j - 1] == '*')
 
-                     dp[i][j] = dp[i - 1][j] || dp[i][j - 1];
 
-                 else if (chp[j - 1] == '?' || chs[i - 1] == chp[j - 1])
 
-                     dp[i][j] = dp[i - 1][j - 1];
 
-             }
 
-         }
 
-         return dp[chs.length][chp.length];
 
-     }
 
- }
 
 
  |