您的位置:首页 > 其它

Interleaving String

2015-08-04 09:57 323 查看
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()];
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: