Necesito un algoritmo que devuelve toda combinación posible de todos los caracteres de una cadena.¿Cómo generar todas las permutaciones de una cadena en PHP?
He intentado:
$langd = strlen($input);
for($i = 0;$i < $langd; $i++){
$tempStrang = NULL;
$tempStrang .= substr($input, $i, 1);
for($j = $i+1, $k=0; $k < $langd; $k++, $j++){
if($j > $langd) $j = 0;
$tempStrang .= substr($input, $j, 1);
}
$myarray[] = $tempStrang;
}
Pero eso sólo devuelve la misma cantidad de combinación como la longitud de la cadena.
Diga el $input = "hey"
, el resultado sería: hey, hye, eyh, ehy, yhe, yeh
.
lo que usted quiere que se llama "permutaciones", no "combinaciones". – Thomas
@Thomas No creo que Johan haya querido * combinación * en el sentido matemático. Pero sí, tienes razón. – Felix
Considere también que obtendrá 'n!' Resultados. Para una cadena de entrada de longitud 12 (sin caracteres duplicados), se trata de 480 millones de resultados, que requieren aproximadamente 5 GB de memoria. –