题目:
对于三个字符串A,B,C。我们称C由A和B交错组成当且仅当C包含且仅包含A,B中所有字符,且对应的顺序不改变。请编写一个高效算法,判断C串是否由A和B交错组成。
给定三个字符串A,B和C,及他们的长度。请返回一个bool值,代表C是否由A和B交错组成。保证三个串的长度均小于等于100。
测试样例:
"ABC",3,"12C",3,"A12BCC",6
返回:true
分析:使用DP动态规划,状态转移方程为f(i,j)=(f(i-1,j)&&A[i-1]==C[j+i-1])||(f(i,j-1)&&B[j-1]==C[i+j-1])).
public boolean isInterleave(String A,String B,String C){
if(A.length()+B.length()!=C.length()) return false;
boolean [][]d=new boolean[A.length()+1][B.length()+1];
for(int i=0;i<=A.length();i++){
for(int j=0;j<=B.length();j++){