zoukankan      html  css  js  c++  java
  • Leetcode第十题——正则表达式的匹配

    1.思想:动态规划

       协助理解工具:https://alchemist-al.com/algorithms/regular-expression-matching

       步骤:

    正则表达式匹配:
    思想:动态规划
    核心:pattern匹配string
    将pattern放在横行,string放在竖行
    如果不是特殊字符,则两者不匹配直接false,两者匹配则按照对角线向斜上方推移。
    如果是特殊字符‘.’,则按照对角线斜上方推移。
    如果是特殊字符'*',当前两格为普通数,则以前两格为准。当前两格是‘.’,则以本列正上方为准(另外,前两格是本行对应字符,也以本行正上方为准)。

     

    代码:

    class Solution {
        public boolean isMatch(String s, String p) {
            boolean[][] table= new boolean[s.length()+1][p.length()+1];
            table[0][0]=true;
            for(int col=1;col<table[0].length;col++){
                char ch=p.charAt(col-1);
                if(col>1){
                    if(ch=='*'){
                        table[0][col]=table[0][col-2];
                    }else{
                        table[0][col]=false;
                    }
    
    
                }else{
                    if(ch=='*') {
    
    
                        table[0][col] = true;
    
                    }
                }
            }
            for(int row=1;row<table.length;row++){
                char ch1=s.charAt(row-1);
                for(int col=1;col<table[row].length;col++){
                    char ch2=p.charAt(col-1);
                    if(ch1==ch2||ch2=='.'){
                        table[row][col]=table[row-1][col-1];
                    }else if (ch2=='*'){
                        if(col>1){
                            if(table[row][col-2]){
                                table[row][col]=true;
                            }else{
                                char prev=p.charAt(col-2);
                                if(prev==ch1||prev=='.'){
                                    table[row][col]=table[row-1][col];
                                }
                            }
                        }
                    }
                }
            }
    
    
    
    
    
    
    
    
    
            boolean lastRow[]=table[table.length-1];
            return lastRow[lastRow.length-1];
        }
    }
    
        
  • 相关阅读:
    稀疏数组
    队列
    链表

    递归
    排序
    查找
    postman设置环境变量
    postman获取全局
    iframe页面刷新问题
  • 原文地址:https://www.cnblogs.com/resort-033/p/13581524.html
Copyright © 2011-2022 走看看