1. boolean isMatch(String p, String str) {
  2. if (p.isEmpty() && str.isEmpty())
  3. return true;
  4. else if (p.isEmpty() && !str.isEmpty())
  5. return false;
  6. else if (str.isEmpty() && p.charAt(0) == '*')
  7. return isMatch(p.substring(1), str);
  8.  
  9. if (p.charAt(0) == '?' || p.charAt(0) == str.charAt(0))
  10. return isMatch(p.substring(1), str.substring(1));
  11.  
  12. boolean match = false;
  13. if (p.charAt(0) == '*') {
  14. for (int i = 0; i < str.length(); i++) {
  15. match = isMatch(p.substring(1), str.substring(i));
  16. }
  17. }
  18.  
  19. return match;
  20. }