我想修改以下动态编程解决方案来解决两个字符串的交织问题。 如果下面的代码返回true,我想打印等于字符串string-1的string-3索引。
示例:
str2:ackrflow
str3:STackOVErflow
str3是str1和str2的交织字符串,因此返回true。
现在,它应该打印索引,如下所示:
对于str3中的索引,“ 0,1,5,6,7”的拼写为“ stove”。
public boolean isInterleaved(char str1[], char str2[], char str3[]){
boolean T[][] = new boolean[str1.length +1][str2.length +1];
if(str1.length + str2.length != str3.length){
return false;
}
for(int i=0; i < T.length; i++){
for(int j=0; j < T[i].length; j++){
int l = i + j -1;
if(i == 0 && j == 0){
T[i][j] = true;
}
else if(i == 0){
if(str3[l] == str2[j-1]){
T[i][j] = T[i][j-1];
}
}
else if(j == 0){
if(str1[i-1] == str3[l]){
T[i][j] = T[i-1][j];
}
}
else{
T[i][j] = (str1[i-1] == str3[l] ? T[i-1][j] : false) || (str2[j-1] == str3[l] ? T[i][j-1] : false);
}
}
}
return T[str1.length][str2.length];
}