Comment générer toutes les permutations d'une chaîne de caractères en PHP?

J'ai besoin de l'aide d'un algorithme de retour de toutes les combinaisons possibles de tous les caractères dans une chaîne.

J'ai essayé:

$langd = strlen($input);
 for($i = 0;$i < $langd; $i++){
     $tempStrang = NULL;
     $tempStrang .= substr($input, $i, 1);
  for($j = $i+1, $k=0; $k < $langd; $k++, $j++){
   if($j > $langd) $j = 0;
   $tempStrang .= substr($input, $j, 1);
 }
 $myarray[] = $tempStrang;
}

Mais qui ne retourne que la même quantité de combinaison de la longueur de la chaîne.

Dire la $input = "hey", le résultat serait: hey, hye, eyh, ehy, yhe, yeh.

  • Ce que vous voulez sont appelés des "permutations", pas des "combinaisons".
  • Je ne pense pas que Johan signifiait combinaison dans le sens mathématique. Mais oui, vous avez raison.
  • Également considérer, que vous aurez n! résultats. Pour une entrée de chaîne de longueur 12 (pas de duplicate caractères), c'est environ 480 millions de résultats, ce qui nécessite environ 5 GO de mémoire.
  • Je sais. Mais il permet d'utiliser le bon terme, lorsque vous Tapez une solution.
  • Toutes les réponses ici que suggérer mandature/récursivité pour se trompent. Voir ici stackoverflow.com/questions/2529508/...
  • Qu'est-ce que mal en utilisant la récursivité pour ce problème? Sûr qu'il y a plusieurs approches pour résoudre ce et le lien wiki suggéré par vous est l'un d'entre eux.
  • Salut, Il y a une bibliothèque PHP qui fait tout ce dont vous avez besoin, à l'aide de générateurs et/ou des itérateurs. Trouver la lib ici: github.com/drupol/phpermutations Laissez-moi savoir si vous avez besoin d'aide.

InformationsquelleAutor Johan | 2010-04-11