0
長さが7より長い文字列の順列を見つけているときに、私のコードに問題があります。例えば、 'abcdefgh'のように。私は12語までの単語の順列を見つけなければならない。私のコードを見直し、最適化ができるかどうかを提案してください。PHPの文字列の順列
function permute($str)
{
if (strlen($str) < 2)
{
return array($str);
}
$permutations = array();
$tail = substr($str, 1);
foreach (permute($tail) as $permutation)
{
$length = strlen($permutation);
for ($i = 0; $i <= $length; $i++)
{
$permutations[] = substr($permutation, 0, $i) . $str[0] . substr($permutation, $i);
}
}
/* Return the result */
return $permutations;
}
$arr = permute('abcdefghijkl');
長さが「n」の文字列の順列の*数*とその数値がどのくらい速くなるかを見積もることはできますか? –
どうしたの?置換はO(n!)で実行されるので、12の長さの文字列を12として実行するには長い時間が必要です!大きな数字です。 –
多項式時間でn番目の順列を生成するトリックがありますが、すべての順列が必要な場合は、すべてのnを計算する必要があります。そのうちの。 –