✅Accepted | | ✅Easy solution || ✅Short & Simple || ✅Best Method
\n# Code\n\nclass Solution {\npublic:\n     bool isMatch(string s, string p) {\n        int m = s.size();\n        int n = p.size();\n        vector<vector<bool
\n# Code\n```\nclass Solution {\npublic:\n     bool isMatch(string s, string p) {\n        int m = s.size();\n        int n = p.size();\n        vector<vector<bool>> dp(m + 1, vector(n + 1, false));\n        dp[0][0] = true;\n        for (int j = 0; j < n && p[j] == \'*\'; j++) {\n            dp[0][j + 1] = true;\n        }\n        \n        for (int i = 1; i <= m; ++i) {\n            for (int j = 1; j <= n; ++j) {\n                if (p[j - 1] == \'*\') {\n                    dp[i][j] = dp[i - 1][j] || dp[i][j - 1];\n                } else if(s[i - 1] == p[j - 1] || p[j - 1] == \'?\') {\n                    dp[i][j] = dp[i - 1][j - 1];\n                }\n            }\n        }\n        return dp[m][n];\n        // return f(s, p, 0, 0);    \n    }\n    bool f(string& s, string &p, int i, int j) {\n        if(j == p.size())\n        return i == s.size();\n\n        if(i == s.size())\n        return p[j]==\'*\' && f(s, p, i, j+1);\n\n        if(p[j] == \'*\')\n        return f(s, p, i, j+1) || f(s, p, i+1, j);\n\n        if(s[i] == p[j] || p[j] == \'?\')\n        return f(s, p, i+1, j+1);\n\n        return false;\n    }\n};\n```\nPlease **UPVOTE** if it helps \u2764\uFE0F\uD83D\uDE0A\nThank You and Happy To Help You!!
['C++']