이 기사의 주요 내용은 PHP를 사용하여 문자열의 전체 배열을 구현하는 것에 관한 것입니다. 관심 있는 친구들은 이에 대해 배울 수 있습니다.
문자열을 입력하고 해당 문자열의 모든 문자 순열을 사전순으로 인쇄합니다.
예를 들어 문자열 abc를 입력하면 a, b, c 문자로 배열될 수 있는 abc, acb, bac, bca, cab, cba 문자열이 모두 인쇄됩니다.
아이디어:
1. 재귀 트리를 형성하여 첫 글자를 수정하고
2. 깊이 우선순위는 재설정 후에만 재개될 수 있습니다
3.
<?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();//调用入口,从索引0开始 $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 비디오 튜토리얼위 내용은 [PHP 학습] 문자열의 완전한 배열을 이루는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!