使用回溯方法的字串排列
排列是指以所有可能的順序重新排列字串的字元。要在 PHP 中產生字串的所有排列,我們可以採用回溯演算法。
假設我們有一個字串「hey」。
分割字串分成單一字元:
我們先將字串分割為單一字元陣列。在這種情況下,['h', 'e', 'y'].
遞歸生成排列:
使用遞歸,我們透過系統地交換字元並產生所有可能的排列來產生排列
回溯恢復原始順序:
產生排列後,我們回溯恢復原始字元順序。這可以防止生成重複排列。
代碼示例:
// Function to generate and print all permutations of $str (N = strlen($str)). function permute($str, $i, $n) { if ($i == $n) { print "$str\n"; } else { for ($j = $i; $j < $n; $j++) { swap($str, $i, $j); permute($str, $i + 1, $n); swap($str, $i, $j); // Backtrack. } } } // Function to swap the characters at positions $i and $j of $str. function swap(&$str, $i, $j) { $temp = $str[$i]; $str[$i] = $str[$j]; $str[$j] = $temp; } $str = "hey"; permute($str, 0, strlen($str)); // Call the function.
輸出:
hey hye ehy eyh yeh yhe
這種回溯方法確保所有排列都是系統產生的已列印。
以上是如何在 PHP 中使用回溯產生所有字串排列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!