题解 | #正则表达式匹配#

正则表达式匹配

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()];
    }
}

全部评论

相关推荐

刘湘_passion:太强了牛肉哥有被激励到
点赞 评论 收藏
分享
群星之怒:不是哥们,你就不好奇瘫痪三十年的老植物人是啥样的吗?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务