美文网首页
输出某字符串的所有不重复组合

输出某字符串的所有不重复组合

作者: peanut___ | 来源:发表于2019-07-27 19:30 被阅读0次

    输出abcd不重复的组合方式?
    思路:
    1 利用递归,循环替换当前字符串为空,并且保存到tmp中。
    2 比如:
    第一次替换a,则str = bcd, tmp = a
    第二次替换b,则str = cd, tmp = ab
    第三次替换c,则str = d, tmp = abc
    第四次,str = d,长度等于0,tmp=abcd
    第五次,str= '',结束本次递归,保存tmp等结果集
    第六次,str=c,为什么等于c,因为回到第2次循环,i=1,替换掉了d,所以等于c。str=c,tmp=abd(拼上之前的就ab+替换的d)

    <?php
    // 任意字符串不重复输出
    $result = [];
    function str_norepeat_array($str, $tmp)
    {
        global $result;
        $long = strlen($str);
        if ($long == 0) $result[] = $tmp;
    
        for ($i = 0; $i < $long; $i++)
        {
            str_norepeat_array(str_replace($str[$i], "", $str), $tmp . $str[$i]);
        }
    }
    str_norepeat_array("abcd", "");
    print_r($result);
    
    
    /* 结果
    Array
    (
        [0] => abcd
        [1] => abdc
        [2] => acbd
        [3] => acdb
        [4] => adbc
        [5] => adcb
        [6] => bacd
        [7] => badc
        [8] => bcad
        [9] => bcda
        [10] => bdac
        [11] => bdca
        [12] => cabd
        [13] => cadb
        [14] => cbad
        [15] => cbda
        [16] => cdab
        [17] => cdba
        [18] => dabc
        [19] => dacb
        [20] => dbac
        [21] => dbca
        [22] => dcab
        [23] => dcba
    )
    */
    
    

    相关文章

      网友评论

          本文标题:输出某字符串的所有不重复组合

          本文链接:https://www.haomeiwen.com/subject/yqtyrctx.html