J'ai vu peu d'implémentations de variations de chaînes en C#, mais aucune d'entre elles n'avait de limitation sur leur longueur. Malheureusement, je ne peux pas les modifier pour atteindre mon objectif qui est par ex.Génération de toutes les variations d'une certaine longueur en chaîne
pour:
string = "ABCD" and variationLength = 2
générer de nouvelles chaînes:
AB, AC, AD, BA, BC, BD, CA, CB, CD, DA, DB, DC
Je cherche exactement itertools.permutations de cette Python mise en œuvre, mais en C#. (https://docs.python.org/3/library/itertools.html#itertools.permutations)
Y a-t-il quelque chose de similaire à son en C#? Si non, alors quel est le moyen le plus facile à mettre en œuvre?
Edit_2: jusqu'à présent je suis venu avec une idée de lister tous les caractères uniques de chaîne donnée, puis obtenir des variations sur les
static void PrintAllKLengthPerm(string str, int k)
{
int n = str.Length;
PrintAllKLengthPermRec(str, "", n, k);
}
// The main recursive method to print all possible strings of length k
static void PrintAllKLengthPermRec(string str, String prefix, int n, int k)
{
// Base case: k is 0, print prefix
if (k == 0)
{
Console.WriteLine(prefix);
return;
}
// One by one add all characters from str and recursively
// call for k equals to k-1
for (int i = 0; i < n; ++i)
{
// Next character of input added
String newPrefix = prefix + str[i];
// k is decreased, because we have added a new character
PrintAllKLengthPermRec(str, newPrefix, n, k - 1);
}
}
static void Main(string[] args)
{
string str = "ABCD";
int permLen = 2;
//get all unique characters in string
string uniqStr = new String(str.Distinct().ToArray());
// Print all possible strings of length permLen out of uniqStr characters
PrintAllKLengthPerm(uniqStr, permLen);
}
Cependant, je suis à la recherche d'une solution plus optimale et efficace
Qu'avez-vous essayé jusqu'à présent? – Ani
S'il vous plaît montrer votre travail. Qu'avez-vous essayé jusqu'à présent? – Soviut
@Sovié édité .. –