Je sais que je peux obtenir toutes les sous-chaînes d'une chaîne donnée comme ceci:Tous les sous-chaînes et « semi-substrings » d'une chaîne
String inputString = "abcde";
java.util.Set<String> substrings = new java.util.TreeSet<>();
int strLength = inputString.length();
for(int i=0; i<strLength; i++)
for(int j=0; j<=strLength-i; j++)
substrings.add(inputString.substring(i, i+j));
qui me obtenir le résultat suivant dans la série:
a, ab, abc, abcd, abcde, b, bc, bcd, bcde, c, cd, cde, d, de, e,
Cependant, je veux obtenir en quelque sorte la liste suivante à la place:
a, ab, abc, abcd, abcde, abce, abd, abde, abe, ac, acd, acde, ace, ad, ade, ae, b, bc, bcd, bcde, bce, bd, bde, be, c, cd, cde, ce, d, de, e
Ainsi, en plus de tous les sous-chaînes, Je veux également les chaînes lorsque vous supprimez un ou plusieurs caractères entre les deux (c.-à-d. ace
en supprimant b
et d
).
Quelle serait la façon la plus simple d'y parvenir? REMARQUE: Tous les caractères doivent rester dans le même ordre, sinon je combinerais toutes les permutations d'une chaîne avec toutes les sous-chaînes de ces chaînes.
Que voulez-vous dire avec * « Cependant, je suis après la liste suivante au lieu » *? –
@NikolasCharalambidis Je vais le reformuler, mais je voulais dire que c'est le résultat que je recherche. Je ne suis pas sûr de savoir comment accomplir cela. –