题解 | #正则表达式匹配#
正则表达式匹配
https://www.nowcoder.com/practice/28970c15befb4ff3a264189087b99ad4
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param str string字符串
* @param pattern string字符串
* @return bool布尔型
*/
public boolean match (String str, String pattern) {
// write code here
int row = pattern.length();
int col = str.length();
boolean dp[][] = new boolean[row + 1][col + 1];
dp[0][0] = true;
for (int i = 1; i < dp[0].length; i++) {
dp[0][i] = false;
}
for (int j = 1; j < dp.length; j++) {
dp[j][0] = false;
if (pattern.charAt(j - 1) == '*' && dp[j - 2][0] == true) {
dp[j][0] = true;
}
}
for (int i = 1; i < dp.length; i++) {
for (int j = 1; j < dp[0].length; j++) {
if ((pattern.charAt(i - 1) == '.' ||
pattern.charAt(i - 1) == str.charAt(j - 1)) && dp[i - 1][j - 1] == true) {
dp[i][j] = true;
}
if (pattern.charAt(i - 1) == '*') {
if (dp[i - 2][j] == true || (pattern.charAt(i - 2) == str.charAt(j - 1) ||
pattern.charAt(i - 2) == '.') && dp[i][j - 1] == true) {
dp[i][j] = true;
}
}
}
}
return dp[row][col];
}
}