3
A
回答
4
你需要產生的所有字符串的排列,方法是通過迭代呼應了所有獨特的洗牌機會可能性,或使用下面的這種遞歸方法。請注意,對於中等大小的陣列,這個速度將會非常快速地增長。對於具有獨特字符的單詞,可能的排列數是n!其中n是長度。對於六個字母的單詞,該數組將有720個條目!這種方法不是最有效的,但取決於你想要做什麼,它應該工作正常。
(來源:http://cogo.wordpress.com/2008/01/08/string-permutation-in-php/)
function permute($str) {
/* If we only have a single character, return it */
if (strlen($str) < 2) {
return array($str);
}
/* Initialize the return value */
$permutations = array();
/* Copy the string except for the first character */
$tail = substr($str, 1);
/* Loop through the permutations of the substring created above */
foreach (permute($tail) as $permutation) {
/* Get the length of the current permutation */
$length = strlen($permutation);
/* Loop through the permutation and insert the first character of the original
string between the two parts and store it in the result array */
for ($i = 0; $i <= $length; $i++) {
$permutations[] = substr($permutation, 0, $i) . $str[0] . substr($permutation, $i);
}
}
/* Return the result */
return $permutations;
}
注意,這個有點幼稚的做法將不能正確處理重複字母(例如, '種子',有兩個e`s)。如上面源中所示,如果單詞包含多個相同字母,則可以使用以下代碼來消除重複項:
$permutations = array_unique(permute($str));
相關問題
- 1. 獲取數組中的所有單詞
- 2. 獲取除一個特定單詞外的所有單詞
- 3. 如何獲取字符串的單詞?
- 4. 獲取Ruby字符串中特定單詞後的單詞嗎?
- 5. 如何替換以特定字符結尾的所有單詞?
- 6. 提取字符向量中兩個特定單詞之間的所有單詞
- 7. SQL - 如何獲取SQL中特殊字符之間的單詞
- 8. 如何從PHP中的字符串中獲取特定單詞?
- 9. 如何在PHP中獲取特定的字符串單詞?
- 10. 如何獲取單詞(字符串)?
- 11. 如何獲得在c#中的字符串的所有單詞?
- 12. 獲取所有兩個特定單詞之間的詞在python
- 13. 如何獲取特定列的值的所有唯一組合
- 14. 如何獲得一組可複製元素的所有獨特n長組合?
- 15. PHP:如何從字符串中獲取特定單詞
- 16. 從字符串中獲取所有可能的英文單詞
- 17. 如何獲取以大寫字母開頭的所有單詞?
- 18. 解析出單詞的所有組合
- 19. 獲取所有的獨特變化
- 20. 如何從一個字符串開始獲取單詞和單詞組?
- 21. 如何從字符串中獲取指定長度內的所有單詞?
- 22. 所有可能的單詞組合與給定的單詞集
- 23. 替換所有非單詞字符,如?* +#
- 24. 如何從數組中單獨獲取每個單詞並測試它是否適合特定條件? (C)
- 25. 獲取所有組合
- 26. 跨索引獲取數組字段的獨特聚合
- 27. 獲取字符串的所有可能組合(preffix/suffix)
- 28. 使用Perl獲取所有可能的字符串組合
- 29. 如何獲取NSString中特定字符的所有NSRange?
- 30. jQuery函數從數組中獲取所有獨特的元素?