PHP字符串全排列
方法一:
$str = "abc";
$a =str_split($str);
perm($a, 0, count($a)-1);
function perm(&$ar, $k, $m) {
if($k == $m){
echo join("",$ar), PHP_EOL;
}else {
for($i=$k; $i<=$m; $i++) {
swap($ar[$k], $ar[$i]);
perm($ar, $k+1, $m);
swap($ar[$k], $ar[$i]);
}
}
}
function swap(&$a, &$b) {
$c = $a;
$a = $b;
$b = $c;
}
方法二:
function output($temp,$level) {
for($i=0;$i<$level;$i++) {
echo $temp[$i];
}
echo PHP_EOL;
}
//产生全排列 递归参数传递一定要注意
function quanpai($arr,$flag,$level,$num,$temp) {
if($level>=$num) {
output($temp,$num);
return;
}
for($i=0;$i<$num;$i++) {
if($flag[$i]==0) {
$temp[$level]=$arr[$i];
$flag[$i]=1;
quanpai($arr,$flag,$level+1,$num,$temp);
$flag[$i]=0;
}
}
}
$str = "abc";
$arr=str_split($str);
$len=count($arr);
$i=0;
$flag=array();
$temp=array();
while($i<$len){
$flag[$i]=0;
$i++;
}
quanpai($arr,$flag,0,$len,$temp);
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇: PHP过滤XSS攻击的函数
- 下一篇: PHP函数中isset和array_key_exists的差异