题意:
给定一个字符串 (t) 和一个字符模式 (s) ,实现一个支持 ‘?’ 和 ‘*’ 的通配符匹配。
‘?’ 可以匹配任何单个字符。 ‘*’ 可以匹配任意字符串(包括空字符串)。 两个字符串完全匹配才算匹配成功。
给定串t和s,问是否能够匹配。
code:
class Solution {
public:
bool isMatch(string t
, string s
) {
int len1
=s
.size(),len2
=t
.size();
vector
<vector
<int> >d(len1
+5,vector
<int>(len2
+5,0));
d
[0][0]=1;
for(int i
=1;i
<=len1
;i
++){
if(s
[i
-1]=='*')d
[i
][0]=1;
else break;
}
for(int i
=1;i
<=len1
;i
++){
for(int j
=1;j
<=len2
;j
++){
if(s
[i
-1]==t
[j
-1]||s
[i
-1]=='?'||s
[i
-1]=='*'){
d
[i
][j
]|=d
[i
-1][j
-1];
}
if(s
[i
-1]=='*'){
d
[i
][j
]|=d
[i
][j
-1];
d
[i
][j
]|=d
[i
-1][j
];
}
}
}
return d
[len1
][len2
];
return 0;
}
};