• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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;$istrlen($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计算排列组合的方法
    • 浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
    • php通过排列组合实现1到9数字相加都等于20的方法
    • php求数组全排列,元素所有组合的方法总结
    • PHP输出多个元素的排列或组合的方法
    • php求数组全排列,元素所有组合的方法
    • PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
    • php实现的生成排列算法示例
    上一篇:PHP实现二维数组按照指定的字段进行排序算法示例
    下一篇:通过PHP设置BugFree获取邮箱通知
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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