• LeetCode OJ


    这道题用DP来解决,也可以用递归,但是时间复杂度很高,被报TLE。

    下面是DP的AC代码。

     1 /**
     2      * Solution 2 :DP Accepted
     3      * create a (len1+1) x (len2+1) matrix A, A[i][j] means s3[0...i+j-1] is formed by the interleaving of s1[0...i-1] and s2[0...j-1]
     4      * A[i][j] =  True   if A[i-1][j] = true && s3[i+j-1] = s1[i-1] or A[i][j-1] = true && s3[i+j-1] = s2[j-1];
     5      *            False  else
     6      * @param s1
     7      * @param s2
     8      * @param s3
     9      * @return
    10      */
    11     public boolean isInterleave2(String s1, String s2, String s3){
    12         int len1 = s1.length();
    13         int len2 = s2.length();
    14         int len3 = s3.length();
    15         
    16         if(len1+len2!=len3)
    17             return false;
    18         
    19         char[] c1 = s1.toCharArray();
    20         char[] c2 = s2.toCharArray();
    21         char[] c3 = s3.toCharArray();
    22         
    23         //DP
    24         boolean[][] A = new boolean[len1+1][len2+1];
    25         A[0][0] = true;
    26         for(int i = 1;i<=len1;i++)
    27             if( A[i-1][0]== true && c3[i-1] == c1[i-1])
    28                 A[i][0] = true;
    29             else
    30                 A[i][0] = false;
    31         for(int j=1;j<=len2;j++)
    32             if(A[0][j-1] == true && c3[j-1] == c2[j-1])
    33                 A[0][j] = true;
    34             else
    35                 A[0][j] = false;
    36         
    37         for(int i=1;i<=len1;i++){
    38             for(int j=1;j<=len2;j++){
    39                 if(A[i-1][j] == false && A[i][j-1] == false)
    40                     A[i][j] = false;
    41                 else if(A[i-1][j] == true && c3[i+j-1] == c1[i-1])
    42                     A[i][j] = true;
    43                 else if(A[i][j-1] == true && c3[i+j-1] == c2[j-1])
    44                     A[i][j] = true;
    45                 else
    46                     A[i][j] = false;
    47             }
    48         }
    49         return A[len1][len2];
    50     }
    有问题可以和我联系,bettyting2010#163 dot com
  • 相关阅读:
    【LOJ #3058】「HNOI2019」白兔之舞(单位根反演+矩阵快速幂+MTT)
    【LOJ #2289】「THUWC 2017」在美妙的数学王国中畅游(LCT+泰勒展开)
    【LOJ #3193】「ROI 2019 Day2」机器人高尔夫球赛(DP+Map)
    【Codeforces 1119H】Triple(FWT)
    PKUWC2020 (旅)游记
    多项式算法合集
    redis入门学习
    servelt
    spring容器原理学习
    Spring MVC
  • 原文地址:https://www.cnblogs.com/echoht/p/3711243.html
Copyright © 2020-2023  润新知