if (p.isEmpty() && str.isEmpty()) return true; else if (p.isEmpty() && !str.isEmpty()) return false; else if (str.isEmpty() && p.charAt(0) == '*') return isMatch(p.substring(1), str); if (p.charAt(0) == '?' || p.charAt(0) == str.charAt(0)) return isMatch(p.substring(1), str.substring(1)); boolean match = false; if (p.charAt(0) == '*') { for (int i = 0; i < str.length(); i++) { match = isMatch(p.substring(1), str.substring(i)); } } return match; }