「ちょっとそこ」と言ってから、この文字列のすべてのプレフィックスの配列を作成する関数を作成しようとしています。したがって、「h」、「he」、「hey」、「hey」、「hey t」などを返します。
次に、同じ関数ですべてのサフィックスの 2 番目の配列を作成します (文字列を逆方向にカウントします)。同じ文字列の場合、「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.
}
どんな助けでも大歓迎です。