J'ai implémenté le problème de la chaîne d'entrelacement avec 2 chaînes en utilisant la programmation dynamique (avec une matrice 2D) et maintenant je veux faire la même chose pour 3 ou 4 chaînes. Je n'arrive pas à comprendre comment manipuler les index. Quelqu'un peut-il m'aider à faire cela avec une matrice 3D ou 4D?Chaîne entrelacée avec trois ou quatre chaînes
Par exemple: s1 = un, s2 = simple, s3 = exemple, res = onsimexepleample -> TRUE
MISE A JOUR ** problème de chaîne entrelacée: Étant donné trois chaînes A, B et C. C est dit être entrelacé A et B, s'il contient tous les caractères de A et B et l'ordre de tous les caractères dans les chaînes individuelles est préservé.
mise en œuvre pour deux chaînes:
public class Solution {
public boolean isInterleave(String s1, String s2, String s3) {
if (s3.length() != s1.length() + s2.length()) {
return false;
}
boolean dp[][] = new boolean[s1.length() + 1][s2.length() + 1];
for (int i = 0; i <= s1.length(); i++) {
for (int j = 0; j <= s2.length(); j++) {
if (i == 0 && j == 0) {
dp[i][j] = true;
} else if (i == 0) {
dp[i][j] = dp[i][j - 1] && s2.charAt(j - 1) == s3.charAt(i + j - 1);
} else if (j == 0) {
dp[i][j] = dp[i - 1][j] && s1.charAt(i - 1) == s3.charAt(i + j - 1);
} else {
dp[i][j] = (dp[i - 1][j] && s1.charAt(i - 1) == s3.charAt(i + j - 1)) || (dp[i][j - 1] && s2.charAt(j - 1) == s3.charAt(i + j - 1));
}
}
}
return dp[s1.length()][s2.length()];
}
}
Vous n'avez pas encore décrit ce qu'est le 'problème de chaîne d'entrelacement ', et n'avez pas encore montré votre travail avec deux chaînes – MBo
Je ne pense pas que ce soit possible. Je peux penser à la solution O (n^3) et O (n^4) pour trois et quatre cordes respectivement. –
@ KaidulIslam, ma faute. J'ai pensé à la matrice 3D ou 4D. – agoodguy