我正在尝试编写一个函数,让我们可以说“hey there”,然后创建该字符串的所有前缀的数组。所以它会返回“h”,“he”,“hey”,“hey”,“hey t”等。获取字符串的所有可能组合(preffix/suffix)
然后我想要创建所有后缀的第二个数组字符串)。所以对于相同的字符串,它会返回“e”,“呃”,“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和循环的组合将做的伎俩。 – Virus721
不是重复的,我不想生成像在帖子中所述的所有组合。请在评论之前阅读它,我看到我将检查这些功能谢谢你。 –
几乎不值得回答:'函数permute($ string){length = strlen($ string); $ result = array();对于($ 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 =“hey there”; $ results = permuteboth($ str); var_dump($ results); ' –