Maison >développement back-end >tutoriel php >Comment puis-je générer toutes les permutations d'une chaîne en PHP ?

Comment puis-je générer toutes les permutations d'une chaîne en PHP ?

DDD
DDDoriginal
2024-12-05 09:18:19540parcourir

How Can I Generate All Permutations of a String in PHP?

Permutations d'une chaîne en PHP

En PHP, générer toutes les permutations de caractères au sein d'une chaîne implique un algorithme qui explore systématiquement toutes les combinaisons possibles .

Approche de retour en arrière

Une approche efficace est retour en arrière. Voici l'implémentation PHP :

function permute($str,$i,$n) {
   if ($i == $n)
       print "$str\n";
   else {
        for ($j = $i; $j < $n; $j++) {
          swap($str,$i,$j);
          permute($str, $i+1, $n);
          swap($str,$i,$j); // backtrack.
       }
   }
}
function swap(&amp;$str,$i,$j) {
    $temp = $str[$i];
    $str[$i] = $str[$j];
    $str[$j] = $temp;
}   

$str = "hey";
permute($str,0,strlen($str)); // call the function.

Explication

  • La fonction permute() explore systématiquement toutes les permutations possibles.
  • Elle appelle récursivement lui-même avec des valeurs croissantes de $i, l'index du caractère échangé.
  • La fonction swap() échange les caractères aux indices $i et $j.
  • La récursivité revient en arrière lorsque la fin de la chaîne est atteinte, imprimant la permutation résultante.

Sortie

L'exécution du code avec $str = "hey" produit le résultat attendu :

hey
hye
ehy
eyh
yeh
yhe

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn