本文共 1102 字,大约阅读时间需要 3 分钟。
给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 ‘?’ 和 ‘*’ 的通配符匹配。
‘?’ 可以匹配任何单个字符。
‘*’ 可以匹配任意字符串(包括空字符串)。 两个字符串完全匹配才算匹配成功。说明:
s 可能为空,且只包含从 a-z 的小写字母。
p 可能为空,且只包含从 a-z 的小写字母,以及字符 ? 和 *。class Solution { public: bool isMatch(string s, string p) { if(s.size() == 0 && p.size() == 0) return true; else if(p.size() == 0) return false; if(p == "*") return true; s=" "+s; p=" "+p; int m=s.size(),n=p.size(); vector> dp(m+1,vector (n+1,false)); dp[0][0]=true; for(int j=0 ;j < n;j++){ if(p[j] == '*') dp[0][j+1]==true; } for(int i=1;i <= m;i++){ for(int j = 1;j <= n;j++){ if(p[j-1] == '*'){ dp[i][j] = dp[i][j-1] || dp[i-1][j]; } else if(s[i-1] == p[j-1] || p[j-1] == '?'){ dp[i][j]=dp[i-1][j-1]; } else dp[i][j]=false; } } return dp[m][n]; }};
通过时间:
转载地址:http://ksemb.baihongyu.com/