您的位置:首页 > 其它

LeetCode力扣之97. Interleaving String

2018-03-13 21:56 411 查看
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.
package leetCode;

/**
* Created by lxw, liwei4939@126.com on 2018/3/13.
*/
public class l097_InterleavingString {

public boolean isInterleave(String s1, String s2, String s3){
if (s1.length() + s2.length() != s3.length()){
return false;
}
boolean[][] matrix = new boolean[s1.length()+1][s2.length()+1];
matrix[0][0] = true;

for (int i =1; i < matrix[0].length; i++){
matrix[0][i] = matrix[0][i-1] && s2.charAt(i-1) == s3.charAt(i-1);
}

for (int i = 1; i < matrix.length; i++){
matrix[i][0] = matrix[i-1][0] && s1.charAt(i-1) == s3.charAt(i-1);
}

for (int i= 1; i < matrix.length; i++){
for (int j=1; j < matrix[0].length; j++){
matrix[i][j] = (matrix[i-1][j] && (s1.charAt(i-1) == s3.charAt(i+j-1)))
|| (matrix[i][j-1] && (s2.charAt(j-1) == s3.charAt(i+j-1)));
}
}
return matrix[s1.length()][s2.length()];
}

public static void main(String[] args){
l097_InterleavingString tmp = new l097_InterleavingString();
String s1 = "aabcc";
String s2 = "dbbca";
String s3 = "aadbbcbcac";
String s4 = "aadbbbaccc";
System.out.println(tmp.isInterleave(s1, s2, s3) ? "s3 is the interleaving String of s1 and s2":
"s3 isn't the interleaving String of s1 and s2");

System.out.println(tmp.isInterleave(s1, s2, s4) ? "s4 is the interleaving String of s1 and s2"
: "s4 isn't the interleaving String of s1 and s2");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: