PHP如何实现字符串的全排列

发布时间:2025-04-26 点击:3
输入一个字符串,按字典序打印出该字符串中字符的所有排列。
例如,输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
思路:
1.利用递归形成递归树,达到深度优先,固定首字母的效果
2.得复位以后才能再次深度优先
3.回溯法思想
4.一张图和一个运行过程,只能慢慢体会了
<?phpfunction test($str,$start,&$res){ //递归终止条件 if($start==strlen($str)){ $res[]=$str; return; } // for($i=$start;$i<strlen($str);++$i){ if($i==$start || $str{$i}!=$str{$start}){ swap($str,$i,$start);var_dump($str.'==='.$start);var_dump($res);sleep(1); test($str,$start+1,$res); swap($str,$i,$start); } } return $res; }function swap(&$str,$a,$b){ if(!is_string($str)) return; $t=$str{$a}; $str{$a}=$str{$b}; $str{$b}=$t; }$str=abc;$res=array();//调用入口,从索引0开始 $res=test($str,0,$res); var_dump($res);string(7) abc===0array(0) { }string(7) abc===1array(0) { }string(7) abc===2array(0) { }string(7) acb===1array(1) { [0]=> string(3) abc}string(7) acb===2array(1) { [0]=> string(3) abc}string(7) bac===0array(2) { [0]=> string(3) abc [1]=> string(3) acb}string(7) bac===1array(2) { [0]=> string(3) abc [1]=> string(3) acb}string(7) bac===2array(2) { [0]=> string(3) abc [1]=> string(3) acb}string(7) bca===1array(3) { [0]=> string(3) abc [1]=> string(3) acb [2]=> string(3) bac}string(7) bca===2array(3) { [0]=> string(3) abc [1]=> string(3) acb [2]=> string(3) bac}string(7) cba===0array(4) { [0]=> string(3) abc [1]=> string(3) acb [2]=> string(3) bac [3]=> string(3) bca}string(7) cba===1array(4) { [0]=> string(3) abc [1]=> string(3) acb [2]=> string(3) bac [3]=> string(3) bca}string(7) cba===2array(4) { [0]=> string(3) abc [1]=> string(3) acb [2]=> string(3) bac [3]=> string(3) bca}string(7) cab===1array(5) { [0]=> string(3) abc [1]=> string(3) acb [2]=> string(3) bac [3]=> string(3) bca [4]=> string(3) cba}string(7) cab===2array(5) { [0]=> string(3) abc [1]=> string(3) acb [2]=> string(3) bac [3]=> string(3) bca [4]=> string(3) cba}array(6) { [0]=> string(3) abc [1]=> string(3) acb [2]=> string(3) bac [3]=> string(3) bca [4]=> string(3) cba [5]=> string(3) cab}

mysql数据库如何创建数据表
域名等待上报-域名及账户问题
买网站虚拟主机要注意什么
等级保护备案系统
云服务器配置代理服务
腾讯云服务器关机还收费吗多少钱
香港高防服务器哪里有
阿里云云服务器如何建站