一些思路不是很清晰的演算法題
阿新 • • 發佈:2020-08-02
正則表示式匹配
public boolean isMatch(String s, String p) { if (s == null || p == null) return false; int m = s.length(), n = p.length(); boolean[][] dp = new boolean[m + 1][n + 1]; dp[0][0] = true; for (int j = 1; j <= n; j++) { if (p.charAt(j - 1) == '*') { dp[0][j] = dp[0][j - 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] || dp[i-1][j-2] || dp[i-1][j]; // 抵消0、1、多 } else { dp[i][j] = dp[i][j-2]; } } } } return dp[m][n]; }