题解 | #正则表达式匹配#
正则表达式匹配
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
// 状态定义dp[i][j]:表示str前i个字符和pattern前j个字符是否匹配
boolean dp[][] = new boolean[str.length() + 1][pattern.length() + 1];
// 遍历str每个长度
for(int i = 0;i <= str.length();i++){
// 遍历pattern每个长度
for(int j = 0;j <= pattern.length();j++){
// 空正则场景
if(j == 0){
dp[i][j] = (i == 0?true:false);
}else{
if(pattern.charAt(j - 1) != '*'){
if(i > 0 && (str.charAt(i - 1) == pattern.charAt(j - 1) || pattern.charAt(j - 1) == '.')){
dp[i][j] = dp[i - 1][j - 1];
}
}else{
if(j >= 2){
dp[i][j] |= dp[i][j - 2];
}
if(i >= 1 && j >= 2 && (str.charAt(i -1) == pattern.charAt(j - 2) || pattern.charAt(j - 2) == '.')){
dp[i][j] |= dp[i - 1][j];
}
}
}
}
}
return dp[str.length()][pattern.length()];
}
}

深信服公司福利 897人发布