题目: PHP字符串的排列?
描述:
输入一个字符串,按字典序打印出该字符串中字符的所有排列。
例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
输入描述:
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
<?php
function Permutation($str)
{
if($str==""){
return [];
}
$arr = str_split($str);
sort($arr);
$r = [];
per($arr, $r, '');
return $r;
}
function swap(&$a, &$b){
$tmp = $a;
$a = $b;
$b = $tmp;
}
function per($arr, &$r, $str){
$len = count($arr);
if($len == 1){
$r[] = $str.$arr[0];
return;
}
for($i=0;$i<$len;$i++){
if($i!=0 && $arr[$i] == $arr[0]){
continue;
}
swap($arr[$i],$arr[0]);
per(array_slice($arr,1), $r, $str.$arr[0]);
}
}