zoukankan      html  css  js  c++  java
  • Interleaving String

    Given s1s2s3, find whether s3 is formed by the interleaving of s1 and s2.

    For example,
    Given:
    s1 = "aabcc",
    s2 = "dbbca",

    When s3 = "aadbbcbcac", return true.
    When s3 = "aadbbbaccc", return false.

     1 public class Solution {
     2     public boolean isInterleave(String s1, String s2, String s3) {
     3         int length_s1 = s1.length();
     4         int length_s2 = s2.length();
     5         int length_s3 = s3.length();
     6         if(length_s1 + length_s2 != length_s3)
     7             return false;
     8         boolean state[][] = new boolean[length_s1 + 1][length_s2 + 1];
     9         //init state[][]
    10         state[0][0] = true;
    11         for(int i = 1; i <= length_s1; i++){
    12             state[i][0] = (s1.charAt(i - 1) == s3.charAt(i - 1)) && state[i - 1][0];
    13         }//for
    14         for(int i = 1; i <= length_s2; i++){
    15             state[0][i] = (s2.charAt(i - 1) == s3.charAt(i - 1)) && state[0][i - 1];
    16         }//for
    17         
    18         //fill state[][]
    19         for(int i = 1; i <= length_s1; i++){
    20             for(int j = 1; j <= length_s2; j++){                
    21                 state[i][j] = (state[i - 1][j] && s1.charAt(i - 1) == s3.charAt(i + j - 1)) || (state[i][j - 1] && s2.charAt(j - 1) == s3.charAt(i + j - 1));
    22             }//for
    23         }//for
    24         //Util.showTwoDimensionalArray(state);
    25         return state[length_s1][length_s2];
    26     }
    27 }

    思路

    这是一道二维动态规划的题

    参考:http://blog.csdn.net/sunbaigui/article/details/8980830

    这里state[i][j]表示s3(1..i + j )个字符是否能由s1(1, i)和s2(1, j)个字符串组成

    递推公式

    state[i][j] = (state[i - 1][j] && s1.charAt(i - 1) )|| (state[i][j - 1] && s2.charAt(j - 1))

    如果用递归会出现超时的问题

  • 相关阅读:
    JS正则表达式
    TortoiseGit 中文汉化
    java之 Mybatis框架
    正向代理和反向代理
    Java基础之 多线程
    python库参考学习网址
    postman进行https接口测试所遇到的ssl证书问题,参考别人方法
    hbase单机搭建
    搭建单机版伪分布zookeeper集群
    搭建hadoop单机版
  • 原文地址:https://www.cnblogs.com/luckygxf/p/4260008.html
Copyright © 2011-2022 走看看