Я пытаюсь написать функцию, которая будет принимать, давайте скажем «эй там», а затем создайте массив всех префикса этой строки. Таким образом, он будет возвращать «h», «he», «hey», «hey», «hey t» и т. Д. И т. Д.Получить всю возможную комбинацию (префикс/суффикс) строки
Тогда я хотел бы, чтобы одна и та же функция создавала второй массив из всех суффиксов Струна). поэтому для той же строки он будет возвращать «e», «er», «ere», «ereh», «ereht», «ereht» и т. д.
Я немного обманываю, чтобы понять это, но мне удалось чтобы получить следующее, которое получает все возможные комбинации строки, мне просто нужно заставить ее сделать это только по порядку.
$str = "hey there";
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 to swap the char at pos $i and $j of $str.
function swap(&$str,$i,$j) {
$temp = $str[$i];
$str[$i] = $str[$j];
$str[$j] = $temp;
}
permute($str,0,strlen($str)); // call the function.
}
Любая помощь очень ценится.
Комбинация substr, strrev и loop будет делать трюк. – Virus721
Не дубликат, я не хочу генерировать все комбинации, как указано в сообщении. Пожалуйста, прочитайте его перед комментарием, и я вижу, что я проверю эти функции отблагодарить. –
Вряд ли стоит ответить: 'function permute ($ string) { $ length = strlen ($ string); $ result = array(); for ($ i = 1; $ i <= $ length; $ i ++) { $ result [] = substr ($ string, 0, $ i); } return $ result; } function permuteboth ($ string) { $ results = array(); $ results [] = permute ($ string); $ results [] = permute (strrev ($ string)); return $ results; } $ str = "эй там"; $ results = permuteboth ($ str); var_dump ($ results); ' –