首页 > 编程 > PHP > 正文

[PHP学习] 如何实现字符串的全排列

2020-03-22 17:54:23
字体:
来源:转载
供稿:网友
本文的主要内容是关于用PHP实现字符串的全排列,具有一定的参考价值,感兴趣的朋友可以了解一下。

输入一个字符串,按字典序打印出该字符串中字符的所有排列。

例如,输入字符串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===0 array(0) {}string(7) abc===1 array(0) {}string(7) abc===2 array(0) {}string(7) acb===1 array(1) { [0]= string(3) abc }string(7) acb===2 array(1) { [0]= string(3) abc }string(7) bac===0 array(2) { [0]= string(3) abc  [1]= string(3) acb }string(7) bac===1 array(2) { [0]= string(3) abc  [1]= string(3) acb }string(7) bac===2 array(2) { [0]= string(3) abc  [1]= string(3) acb }string(7) bca===1 array(3) { [0]= string(3) abc  [1]= string(3) acb  [2]= string(3) bac }string(7) bca===2 array(3) { [0]= string(3) abc  [1]= string(3) acb  [2]= string(3) bac }string(7) cba===0 array(4) { [0]= string(3) abc  [1]= string(3) acb  [2]= string(3) bac  [3]= string(3) bca }string(7) cba===1 array(4) { [0]= string(3) abc  [1]= string(3) acb  [2]= string(3) bac  [3]= string(3) bca }string(7) cba===2 array(4) { [0]= string(3) abc  [1]= string(3) acb  [2]= string(3) bac  [3]= string(3) bca }string(7) cab===1 array(5) { [0]= string(3) abc  [1]= string(3) acb  [2]= string(3) bac  [3]= string(3) bca  [4]= string(3) cba }string(7) cab===2 array(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 }

相关教程:PHP视频教程

以上就是[PHP学习] 如何实现字符串的全排列的详细内容,PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表