Leetcode 44. Wildcard Matching (Hard) (cpp)

来源:互联网 发布:淘宝代工品牌怎么样 编辑:程序博客网 时间:2024/05/16 18:39

Leetcode 44. Wildcard Matching (Hard) (cpp)

Tag: Dynamic Programming, Backtracking, Greedy, String

Difficulty: Hard


/*44. Wildcard Matching (Hard)Implement wildcard pattern matching with support for '?' and '*'.'?' Matches any single character.'*' Matches any sequence of characters (including the empty sequence).The matching should cover the entire input string (not partial).The function prototype should be:bool isMatch(const char *s, const char *p)Some examples:isMatch("aa","a") → falseisMatch("aa","aa") → trueisMatch("aaa","aa") → falseisMatch("aa", "*") → trueisMatch("aa", "a*") → trueisMatch("ab", "?*") → trueisMatch("aab", "c*a*b") → false*/class Solution {public:bool isMatch(string s, string p) {int m = s.size(), n = p.size();vector<vector<bool>> t(m + 1, vector<bool>(n + 1, false));t[0][0] = true;for (int j = 1; j <= n; j++) {t[0][j] = p[j - 1] == '*' && t[0][j - 1];}for (int i = 1; i <= m; i++) {for (int j = 1; j <= n; j++) {if (p[j - 1] != '*') {t[i][j] = t[i - 1][j - 1] && (s[i - 1] == p[j - 1] || p[j - 1] == '?');}else {t[i][j] = t[i][j - 1] || t[i - 1][j];}}}return t[m][n];}};


0 0
原创粉丝点击