字串全排列 java實現
經常會遇到字串全排列的問題。例如:輸入為{‘a’,’b’,’c’},則其全排列組合為abc,acb,bac,bca,cba,cab。對於輸入長度為n的字串陣列,全排列組合為n!種。
思路:從字串陣列中每次選取一個元素,作為結果中的第一個元素。然後,對剩餘的元素全排列,步驟跟上面一樣。很明顯這是個遞迴處理的過程,一直到最後即可。
按照慣例,talk is cheap,show me the code:
package leilei.bit.edu.tree;
public class RecursionTree {
public static void permutation(char[] s,int from,int to) {
if(to <= 1)
return;
if(from == to) {
System.out.println(s);
} else {
for(int i=from; i<=to; i++) {
swap(s,i,from); //交換字首,使其產生下一個字首
permutation(s, from+1, to);
swap(s,from,i); //將字首換回,繼續做上一個字首的排列
}
}
}
public static void swap(char[] s,int i,int j) {
char tmp = s[i];
s[i] = s[j];
s[j] = tmp;
}
public static void main(String[] args) {
char[] s = {'a','b','c'};
permutation(s, 0, 2);
}
}
程式碼執行結果
abc
acb
bac
bca
cba
cab
相關文章
- Java實現-全排列Java
- 字串全排列字串
- 字串的全排列字串
- 從基礎講全排列(Java實現)Java
- Java實現全排列、組合演算法Java演算法
- 實現自然數N的全排列
- 【演算法】遞迴實現全排列演算法遞迴
- 全排列演算法的JS實現演算法JS
- leetcode:全排列(java回溯)LeetCodeJava
- 全排列的實現之遞迴版與迭代版遞迴
- 字串的排列字串
- JavaScript字串逆序排列JavaScript字串
- 字串的升序降序排列字串
- 全排列演算法演算法
- 演算法——全排列演算法
- 字母排列(python實現)Python
- 隨機輸入3個字串,降序排列,用引用、字元陣列實現隨機字串字元陣列
- 字串排列組合問題字串
- 【劍指offer】字串的排列字串
- 九度 1369 字串的排列字串
- 567. 字串的排列(中)字串
- Day 28 | 491.遞增子序列 、46.全排列、 47.全排列 II
- 【Algorithm】全排列演算法Go演算法
- JavaScript陣列元素全排列JavaScript陣列
- JZ-027-字串的排列字串
- CSS3實現文字垂直排列CSSS3
- Leetcode——46. 全排列LeetCode
- 【LeetCode】46. 全排列LeetCode
- js陣列全排列問題JS陣列
- 有重複元素的全排列
- LeetCode系列46—全排列LeetCode
- LeetCode-046-全排列LeetCode
- 全排列及相關擴充套件演算法(二)——求字典序下一組排列及全排列演算法套件演算法
- 把字串轉換成整數(Java實現)字串Java
- 無重複字串的排列組合字串
- 劍指 Offer 38. 字串的排列字串
- LeetCode 567. 字串的排列LeetCode字串
- 排列子串;及翻譯字串分析字串