PHP-如何从字符串创建所有可能性
这里有一个示例字符串“XjYAKpR”。。如何使用该字符串创建所有新字符串的可能性 我以前试过PHP-如何从字符串创建所有可能性,php,Php,这里有一个示例字符串“XjYAKpR”。。如何使用该字符串创建所有新字符串的可能性 我以前试过 function containAllRots($s, $arr) { $n = strlen($s); $a = array(); for ($i = 0; $i < $n ; $i++) { $rotated = rotate(str_split($s), $i); $a[] = $rotated; } print_r($a);die(); if (arra
function containAllRots($s, $arr) {
$n = strlen($s);
$a = array();
for ($i = 0; $i < $n ; $i++) {
$rotated = rotate(str_split($s), $i);
$a[] = $rotated;
}
print_r($a);die();
if (array_diff($arr, $a)) {
return True;
}
else
{
return False;
}
}
函数包含所有rot($s,$arr){
$n=strlen($s);
$a=数组();
对于($i=0;$i<$n;$i++){
$rotated=旋转(str_split($s),$i);
$a[]=$旋转;
}
打印($a);模具();
if(数组_diff($arr,$a)){
返回True;
}
其他的
{
返回False;
}
}
我让2个函数旋转并生成
function rotate($l, $n) {
$b = $l[$n];
$sisa = array_values(array_diff($l, array($b)));
for ($i = 0; $i < count($sisa) ; $i++) {
$random[] = generate($sisa, $b);
}
print_r($random);die();
$hasil = $l[$n] . implode("",$random);
return $hasil;
}
function generate($sisa, $b) {
$string = implode("",$sisa);
$length = count($sisa);
$size = strlen($string);
$str = '';
for( $i = 0; $i < $length; $i++ ) {
$str .= $string[ rand( 0, $size - 1 ) ];
}
函数旋转($l,$n){
$b=$l[$n];
$sisa=数组值(数组差异($l,数组($b));
对于($i=0;$i
这里有一对函数,可用于计算置换集
(不考虑重复)
在执行结束时,您将在result_set数组中生成由字符串生成的5040个排列(按字母顺序排序)
添加一个字符,您将获得超过40000个结果
函数在实现和命名方面都非常简单,这两个方面都可以改进。您向我们展示的代码没有生成字符串的所有排列,请检查数组是否包含给定字符串的所有排列。排列必须在目标数组中按精确顺序排列,否则测试将失败。作为第一个选项,我将在扩散之前对阵列进行排序。谢谢,太棒了!
function extends_permutation($char, $perm) {
$result = [];
$times = count($perm);
for ($i=0; $i<$times; $i++) {
$temp = $perm;
array_splice($temp, $i, 0, $char);
array_push($result, $temp);
}
array_push($result, array_merge($perm, [$char]));
return $result;
}
function extends_set_of_permutations($char, $set) {
$step = [];
foreach ($set as $perm) {
$step = array_merge($step, extends_permutation($char, $perm));
}
return $step;
}
$seed = "XjYAKpR";
// the first set of permutations contains only the
// possible permutation of a one char string (1)
$result_set = [[$seed[0]]];
$rest = str_split(substr($seed,1));
foreach($rest as $char) {
$result_set = extends_set_of_permutations($char, $result_set);
}
$result_set = array_map('implode', $result_set);
sort($result_set);