Java Easiest Solution with proper comments
Hi Family,\n\nPlease have a look into the code with proper comment\nIf you liked the code Please Please upvote !!!\n\n\nclass Solution {\n    Boolean dp[][];\n 
Hi Family,\n\nPlease have a look into the code with proper comment\nIf you liked the code Please Please upvote !!!\n\n```\nclass Solution {\n    Boolean dp[][];\n    public boolean isMatch(String s, String p) {\n        int m = p.length();\n        int n = s.length();\n        \n        dp = new Boolean[m][n];\n        \n        return is_match(m-1,n-1,p,s);\n    }\n    \n    private boolean is_match(int m,int n,String p,String s){\n        \n        //Base Case\n        //if m and n both are 0 i.e strings are matching\n        if (m<0 && n<0) return true;\n        \n        // if n has some character but m is empty\n        if (m<0 && n>=0) return false;\n        \n        // if m has some character but n is empty\n        \n        if (n<0 && m>=0) {\n            /*\n                if str = "" && pattern = "***" then return true;\n                    because we can neglect the * also\n                else str = ""  && pattern = "sd**" return false;\n                    because after neglecting the * pattern has some more character\n            \n            */\n            for (int i=0;i<=m;i++){\n                if (p.charAt(i) != \'*\') return false;\n            }\n            return true;\n        }\n        \n        //Memorisation\n        if (dp[m][n] != null) return dp[m][n];\n        \n        //if both the character is equal || patern[m] == ?\n        if (p.charAt(m) == s.charAt(n) || p.charAt(m) == \'?\'){\n            return dp[m][n] = is_match(m-1,n-1,p,s);\n        }\n        \n        // if p has \'*\'\n        if (p.charAt(m) == \'*\'){\n            return dp[m][n] = is_match(m-1,n,p,s) || is_match(m,n-1,p,s);\n        }\n        // if both the character is not equal\n        return false;\n            \n    }\n}\n```\n\nThanks\n
['Dynamic Programming', 'Java']