手机版

PHP实现字符串的全排列详解

时间:2021-08-25 来源:互联网 编辑:宝哥软件园 浏览:

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

例如,输入字符串abc,则打印出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。思路:1.利用递归形成递归树,达到深度优先,固定首字母的效果

2.得复位以后才能再次深度优先

3.回溯法思想

4.一张图和一个运行过程,只能慢慢体会了

?phpfunction测试($str,$start,$res){ //递归终止条件if($ start==strlen($ str)){ $ RES[]=$ str;返回;}//for($ I=$ start;$ is tren($ str);$i){ if($i==$start || $str{$i}!=$str{$start}){ swap($str,$i,$ start);var_dump($str .'==='.$ start);var _ dump($ RES);睡眠(1);test($str,$start 1,$ RES);swap($str,$i,$ start);} }返回$ res}函数交换($str,$a,$b){ if(!is_string($str))返回;$ 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)==2 ' array(0){ } string(7)' ACB===1 ' array(1){[0]=string(3)' ABC ' } string(7)' ACB===2 ' array(1){[2]{[0]=string(3)' ABC ' } ABC '[1]=string(3)' ACB '[2]=string(3)'

版权声明:PHP实现字符串的全排列详解是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。