zoukankan      html  css  js  c++  java
  • 字符串通配

    题目:对于字符串A,其中绝对不含有字符’.’和’*’。再给定字符串B,其中可以含有’.’或’*’,’*’字符不能是B的首字符,并且任意两个’*’字符不相邻。exp中的’.’代表任何一个字符,B中的’*’表示’*’的前一个字符可以有0个或者多个。请写一个函数,判断A是否能被B匹配。"abcd",4,".*",2返回:true

    思路:不用api而用dp,dp[i][j]代表A中的1~i位可以匹配B中的1~j位,‘*’可以匹配前一位任意次数,dp[i][j]=d[i-1][j] || d[i][j -1]‘.’匹配任意字符一次,dp[i][j]=dp[i-1][j-1];其他情况就必须A[i-1]和B[j-1]一样了

    public boolean chkWildMatch(String A, int lena, String B, int lenb) {
           boolean[][] dp = new boolean[lena+1][lenb+1];
            //dp[i][j]代表A中的1到i位可以匹配B中1到i位
           dp[0][0]=true;
            for(int i=1;i<=lena;i++){
                for(int j=1;j<=lenb;j++){
                    if(B.charAt(j-1)=='*'){
                        dp[i][j]=dp[i-1][j]||dp[i][j-1];
                    }else if(B.charAt(j-1)=='.'){
                        dp[i][j]=dp[i-1][j-1];
                    }else{
                        dp[i][j]=dp[i-1][j-1]&&(A.charAt(i-1)==B.charAt(j-1));
                    }
                }
            }
            return dp[lena][lenb];
        }
  • 相关阅读:
    js设计模式(一)---单例模式
    JavaScript---设计模式总结
    js设计模式---单例模式
    js设计模式---工厂模式
    react学习笔记01
    css常用布局
    js 继承
    vue路由动态加载
    vue 项目总结
    css文字两端对齐
  • 原文地址:https://www.cnblogs.com/team42/p/6736724.html
Copyright © 2011-2022 走看看