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.
思路:动态规划算法
Java代码实现
public class Solution {
public boolean isInterleave(String s1, String s2, String s3) {
if(s1.length() + s2.length() != s3.length())
return false;
int len1 = s1.length();
int len2 = s2.length();
int len3 = s3.length();
//将字符串转换成数组形式
char[] ch1 = s1.toCharArray();
char[] ch2 = s2.toCharArray();
char[] ch3 = s3.toCharArray();
//dp[i][j]表示s3的前i+j个字符能否由s1的前i个字符和s2的前j的字符交叉组成