我正在尝试编写一个函数,让我们说“嘿,那里”,然后创建一个包含该字符串所有前缀的数组。所以它会返回“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.
}
非常感谢任何帮助。