溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

PHP實(shí)現(xiàn)字符串全排列的方法是什么

發(fā)布時(shí)間:2020-08-25 11:15:35 來(lái)源:億速云 閱讀:149 作者:小新 欄目:編程語(yǔ)言

這篇文章給大家分享的是有關(guān)PHP實(shí)現(xiàn)字符串全排列的方法是什么的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧。

輸入一個(gè)字符串,按字典序打印出該字符串中字符的所有排列。

例如,輸入字符串a(chǎn)bc,則打印出由字符a,b,c所能排列出來(lái)的所有字符串a(chǎn)bc,acb,bac,bca,cab和cba。
思路:
1.利用遞歸形成遞歸樹(shù),達(dá)到深度優(yōu)先,固定首字母的效果

2.得復(fù)位以后才能再次深度優(yōu)先

3.回溯法思想

4.一張圖和一個(gè)運(yùn)行過(guò)程,只能慢慢體會(huì)了

<?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();//調(diào)用入口,從索引0開(kāi)始
$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實(shí)現(xiàn)字符串全排列的方法是什么

感謝各位的閱讀!關(guān)于PHP實(shí)現(xiàn)字符串全排列的方法是什么就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI