mplement 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)
Example
Some examples:
isMatch("aa","a") → false isMatch("aa","aa") → true isMatch("aaa","aa") → false isMatch("aa", "*") → true isMatch("aa", "a*") → true isMatch("ab", "?*") → true isMatch("aab", "c*a*b") → false
class Solution {
public:
/**
* @param s: A string
* @param p: A string includes "?" and "*"
* @return: A boolean
*/
bool isMatch(const char *s, const char *p) {
// write your code here
int s_size = strlen(s);
int p_size = strlen(p);
vector<vector<bool> > dp(s_size+1, vector<bool>(p_size+1));
dp[0][0] = 1;
for (int i=1; i<=s_size; i++)
{
for (int j=1; j<=p_size; j++)
{
if (dp[i-1][j-1])
{
if (s[i-1] == p[j-1])
{
dp[i][j] = true;
}
else if (p[j-1] == '?' || p[j-1] == '*')
{
dp[i][j] = true;
}
}
else if (dp[i-1][j])
{
if (p[j-1] == '*')
{
dp[i][j] = true;
}
}
}
}
return dp[s_size][p_size];
}
};