Interleaving String

来源:互联网 发布:java写入excel文件 编辑:程序博客网 时间:2024/06/03 23:30

Given s1, s2, s3, 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.

动态规划,类似于求最长公共子序列。

public class Solution {    public boolean isInterleave(String s1, String s2, String s3) {        if(s1.length()+s2.length()!=s3.length())            return false;    boolean[][] arr=new boolean[s1.length()+1][s2.length()+1];    arr[0][0]=true;    for(int i=1;i<=s1.length();i++)    arr[i][0]=arr[i-1][0]&&s3.charAt(i-1)==s1.charAt(i-1);    for(int i=1;i<=s2.length();i++)    arr[0][i]=arr[0][i-1]&&s3.charAt(i-1)==s2.charAt(i-1);    for(int i=1;i<=s1.length();i++){    for(int j=1;j<=s2.length();j++)    arr[i][j]=(arr[i-1][j]&&s1.charAt(i-1)==s3.charAt(i+j-1))||    (arr[i][j-1]&&s2.charAt(j-1)==s3.charAt(i+j-1));    }    return arr[s1.length()][s2.length()];    }}


0 0
原创粉丝点击