對於三個字符串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
import java.util.*;
public class Mixture {
public boolean chkMixture(String A, int n, String B, int m, String C, int v) {
// write code here
return chkMixture(A,B,C,A.length()-1,B.length()-1,C.length()-1);
}
public static boolean chkMixture(String A,String B, String C,int i,int j,int k){
if(k == 0){
return true;
}
if(i == 0){
if(B.charAt(j) == C.charAt(k)){
return chkMixture(A,B,C,0,j-1,k-1);
}else{
return false;
}
}
if(j == 0){
if(A.charAt(i) == C.charAt(k)){
return chkMixture(A,B,C,i-1,0,k-1);
}else{
return false;
}
}
boolean res1 = false;
boolean res2 = false;
if(A.charAt(i) == C.charAt(k)){
res1 = chkMixture(A,B,C,i-1,j,k-1);
}
if(B.charAt(j) == C.charAt(k)){
res2 = chkMixture(A,B,C,i,j-1,k-1);
}
return res1||res2;
}
}