×

QQ登录

只需一步,快速开始

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

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

            在本篇文章里小编给大家整理了关于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"}
1.png


        



上一篇:铃声多多免付费会员最新破解版
下一篇:王者荣耀领免费取英雄 铭文碎片等奖品
资源网

写了 717 篇文章,拥有财富 1462,被 0 人关注

小桀资源网-精品资源网-热爱网络技术打造平民化的学习交流平台、免费共享,注重人才、注重技术、传播好资源,打造全网最大资源整合站,几乎覆盖整个网络分类,我们会终身不断的更新,小桀资源网的资源整合,更是您的
您需要登录后才可以回帖 登录 | 立即注册
B Color Link Quote Code Smilies

成为第一个吐槽的人

發布資源 快速回复 返回列表 客服中心 聯系我們
返回顶部