我正在嘗試編寫一個函數,讓我們可以說「hey there」,然後創建該字符串的所有前綴的數組。所以它會返回「h」,「he」,「hey」,「hey」,「hey t」等。獲取字符串的所有可能組合(preffix/suffix)
然後我想要創建所有後綴的第二個數組字符串)。所以對於相同的字符串,它會返回「e」,「呃」,「ere」,「ereh」,「ereht」,「ereht」等
我想要弄清楚這一點,但我已經管理得到下面這個獲得一個字符串的所有可能的組合,我只需要讓它做到這一點,只有按順序。
$str = "hey there";
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 char at pos $i and $j of $str.
function swap(&$str,$i,$j) {
$temp = $str[$i];
$str[$i] = $str[$j];
$str[$j] = $temp;
}
permute($str,0,strlen($str)); // call the function.
}
任何幫助非常感謝。
substr,strrev和循環的組合將做的伎倆。 – Virus721
不是重複的,我不想生成像在帖子中所述的所有組合。請在評論之前閱讀它,我看到我將檢查這些功能謝謝你。 –
幾乎不值得回答:'函數permute($ string){length = strlen($ string); $ result = array();對於($ i = 1; $ i <= $ length; $ i ++){ $ result [] = substr($ string,0,$ i); } return $ result; } function permuteboth($ string){ $ results = array(); $ results [] = permute($ string); $ results [] = permute(strrev($ string)); return $ results; } $ str =「hey there」; $ results = permuteboth($ str); var_dump($ results); ' –