0
点赞
收藏
分享

微信扫一扫

2022-01-11(剑指 Offer 19. 正则表达式匹配)

酷子腿长一米八 2022-01-12 阅读 42
class Solution {
    public boolean isMatch(String s, String p) {
        int n=s.length();
        int m=p.length();
        boolean[][] dp=new boolean[n+1][m+1];
        for(int i=0;i<=n;++i){
            for(int j=0;j<=m;++j){
                if(j==0){
                    dp[i][j]=i==0;
                }else{
                    if(p.charAt(j-1)!='*'){
                        if(i>=1&&(s.charAt(i-1)==p.charAt(j-1)||p.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&&(s.charAt(i-1)==p.charAt(j-2)||p.charAt(j-2)=='.')){
                            dp[i][j]|=dp[i-1][j];
                        }
                    }
                }
            }
        }
        return dp[n][m];
    }
}
举报

相关推荐

0 条评论