题目链接:https://leetcode-cn.com/problems/wildcard-matching/
写了个暴力n^2。
递归写T了,于是换成了迭代…
主要学会了怎么初始化一个vector吧…
边界处理也太恶心了,我干脆全部+1。。。
class Solution {
public:
bool isMatch(string s, string p) {
int n=s.size(),m=p.size();
vector<vector<bool>> f(n + 1, vector<bool>(m + 1));
f[0][0]=1;
for(int i=1;i<=n;i++) f[i][0]=0;
for(int i=1;i<=m;i++) f[0][i]=f[0][i-1] && p[i-1]=='*';
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
if(p[j]=='?') f[i+1][j+1] = f[i+1 -1][j+1 -1];
else if(p[j]=='*')
{
f[i+1][j+1] = f[i+1][j+1 -1] || f[i+1 -1][j+1];
}
else
f[i+1][j+1] = s[i]==p[j] && f[i+1 -1][j+1 -1];
}
return f[n][m];
}
};