ホームページ > バックエンド開発 > PHPチュートリアル > PHP で文字列のすべての順列を生成するにはどうすればよいですか?

PHP で文字列のすべての順列を生成するにはどうすればよいですか?

DDD
リリース: 2024-12-05 09:18:19
オリジナル
558 人が閲覧しました

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

PHP における文字列の順列

PHP では、文字列内の文字のすべての順列を生成するには、可能なすべての組み合わせを体系的に探索するアルゴリズムが必要です.

バックトラックアプローチ

効果的なアプローチの 1 つはバックトラッキングです。 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.
ログイン後にコピー

説明

  • permute() 関数は、可能なすべての置換を体系的に探索します。
  • それは再帰的に呼び出します。 $i の値が増加するにつれて、文字のインデックスは次のようになります。
  • swap() 関数は、インデックス $i と $j の文字を交換します。
  • 文字列の終わりに達すると再帰がバックトラックし、結果の順列を出力します。

出力

実行中$str = "hey" のコードは期待どおりの出力を生成します:

hey
hye
ehy
eyh
yeh
yhe
ログイン後にコピー

以上がPHP で文字列のすべての順列を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート