输入一个字符串,打印出该字符串的所有排列

/**

  • 输入一个字符串,打印出该字符串的所有排列。
  • 例如输入字符串abc,则输出由字符a,b,c所能排列出来的所有字符串
  • abc、acb、bac、bca、cab和cba

*/

$str = 'abcd';
test3(str_split($str), 0, strlen($str)-1);


function test3(&$arr,$start,$len){

    if ($start== $len){
        echo join('', $arr),PHP_EOL;        //④
    }else {

        for ($i = $start; $i <= $len; $i++) {
            swap($arr[$start], $arr[$i]);   //①
            test3($arr, $start + 1, $len);  //②
            swap($arr[$start], $arr[$i]);   //③
        }
    }
}

function swap(&$a, &$b) {
    $tmp = $b;
    $b = $a;
    $a = $tmp;
}

你可能感兴趣的:(输入一个字符串,打印出该字符串的所有排列)