使用回溯方法的字符串排列
排列是指以所有可能的顺序重新排列字符串的字符。要在 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中文网其他相关文章!