public boolean isMatch(String s, String p) {
        if(p == null && s == null) return true;
        else if(p == null) return false;
        else if(s == null) {
            if(p.length() == 0) return true;
            else if(p.length() == 1){ // assume p could not be "*"
                if(p.charAt(0) == '.') return true;
                else return false;
            } else if(p.length() == 2) {
                if(p.charAt(1) == '*') return true;
                else return false;
            }
        }
        return internalIsMatch(s, p, 0, 0);
    }