入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

PHP字符串全排列

创建时间:2016-02-21 投稿人: 浏览次数:4513

方法一:

$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。