Перестановка для строки в php

У меня проблема с моим кодом при поиске перестановки строки для строки длиной больше 7. Например, «abcdefgh». Я должен найти перестановку слова длиной до 12. Просмотрите мой код и предложите, можно ли оптимизировать.

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'); 

Solutions Collecting From Web of "Перестановка для строки в php"