正则表达式匹配
C++代码class Solution { public: bool isMatch(string s, string p) { int m = s.size(), n = p.size(); vectorJava代码> dp(m + 1, vector (n + 1, false)); dp[0][0] = true; for(int i = 1; i <= n; i++){ if(p[i - 1] == '*') dp[0][i] = dp[0][i - 2]; } for(int i = 1; i <= m; i++){ for(int j = 1; j <= n; j++){ if(s[i - 1] == p[j - 1] || p[j - 1] == '.') dp[i][j] = dp[i - 1][j - 1]; else if(p[j - 1] == '*'){ if(s[i - 1] != p[j - 2] && p[j - 2] != '.') dp[i][j] = dp[i][j - 2]; else dp[i][j] = dp[i][j - 2] || dp[i - 1][j]; } } } return dp[m][n]; } };
class Solution { public boolean isMatch(String s, String p){ int m = s.length(), n = p.length(); boolean[][] dp = new boolean[m + 1][n + 1]; dp[0][0] = true; for(int i = 1; i <= n; i++){ if(p.charAt(i - 1) == '*') dp[0][i] = dp[0][i - 2]; } for(int i = 1; i <= m; i++){ for(int j = 1; j <= n; j++){ if(s.charAt(i - 1) == p.charAt(j - 1) || p.charAt(j - 1) == '.') dp[i][j] = dp[i - 1][j - 1]; else if(p.charAt(j - 1) == '*'){ if(s.charAt(i - 1) != p.charAt(j - 2) && p.charAt(j - 2) != '.') dp[i][j] = dp[i][j - 2]; else dp[i][j] = dp[i - 1][j] || dp[i][j - 2]; } } } return dp[m][n]; } }联系方式
如果有任何问题可以邮箱联系我:raymondlam1@yeah.net
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)