剑指 Offer 19. 正则表达式匹配java题解

class Solution {
    public boolean isMatch(String s, String p) {
        int n=s.length();
        int m=p.length();
        boolean[][] f=new boolean[n+1][m+1];
        for(int i=0;i<=n;i++){
            for(int j=0;j<=m;j++){
                if(j==0){
                    f[i][j]=i==0;
                }else{
                    if(p.charAt(j-1)!='*'){
                        if(i>0&&(s.charAt(i-1)==p.charAt(j-1)||p.charAt(j-1)=='.')){
                            f[i][j]=f[i-1][j-1];
                        }
                    }else{
                        if(j>=2){
                            f[i][j]|=f[i][j-2];
                        }
                        if(i>=1&&j>=2&&(s.charAt(i-1)==p.charAt(j-2)||p.charAt(j-2)=='.')){
                            f[i][j]|=f[i-1][j];
                        }
                    }
                }
            }
        }
        return f[n][m];
    }
}

剑指 Offer 19. 正则表达式匹配java题解_第1张图片

你可能感兴趣的:(剑指Offer)