輸出某字符串的所有不重復(fù)組合

輸出abcd不重復(fù)的組合方式?
思路:
1 利用遞歸,循環(huán)替換當(dāng)前字符串為空,并且保存到tmp中。
2 比如:
第一次替換a,則str = bcd, tmp = a
第二次替換b,則str = cd, tmp = ab
第三次替換c,則str = d, tmp = abc
第四次,str = d,長度等于0,tmp=abcd
第五次,str= '',結(jié)束本次遞歸,保存tmp等結(jié)果集
第六次,str=c,為什么等于c,因?yàn)榛氐降?次循環(huán),i=1,替換掉了d,所以等于c。str=c,tmp=abd(拼上之前的就ab+替換的d)

<?php
// 任意字符串不重復(fù)輸出
$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);


/* 結(jié)果
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
)
*/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容