Java實現字串的全排列總結

2021-09-01 12:54:10 字數 780 閱讀 3277

在劍指offer上刷題時遇到的題目:

輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba

輸入乙個字串,長度不超過9(可能有字元重複),字元只包括大小寫字母。
本部落格參考:1.   2. 

本題目用到了遞迴思想,演算法步驟如下:

(1)固定第乙個元素,將剩下的元素進行全排列;(那剩下的元素中又可以分為第乙個和剩下的元素,這樣就用到了遞迴)

(2)每乙個字元都要有做第乙個元素的機會,即將剩下的元素依次與第乙個進行交換;

(3)每次交換後的資料,在進行遞迴處理了之後需要再交換回原來的位置,以便後面的字元與其在進行交換;

(4)在最後的按字典序輸出的處理中,使用到了treeset和arraylist,這兩個容器相互轉換時可以直接使用addall的方法,其中treeset具有排序和唯一性的功能。

**如下:

public static arraylistpermutation(string str) 

/*** @param data 字串轉化成的字元陣列

* @param beginindex 起始位置

* @param result 包含所有的字串的全排列的結果集合

*/public static void permutation(char data, int beginindex, arraylistresult) else

} }}

字串全排列 java實現

經常會遇到字串全排列的問題。例如 輸入為,則其全排列組合為abc,acb,bac,bca,cba,cab。對於輸入長度為n的字串陣列,全排列組合為n 種。思路 從字串陣列中每次選取乙個元素,作為結果中的第乙個元素。然後,對剩餘的元素全排列,步驟跟上面一樣。很明顯這是個遞迴處理的過程,一直到最後即可。...

字串全排列 java實現

經常會遇到字串全排列的問題。例如 輸入為,則其全排列組合為abc,acb,bac,bca,cba,cab。對於輸入長度為n的字串陣列,全排列組合為n 種。思路 從字串陣列中每次選取乙個元素,作為結果中的第乙個元素。然後,對剩餘的元素全排列,步驟跟上面一樣。很明顯這是個遞迴處理的過程,一直到最後即可。...

Java遞迴實現字串全排列

public class allstrings system.out.println chs的全排列如下 as.getallstrings chs,0 public void getallstrings char chs,int from 基本思想 遞迴 遞迴流程 要從下標from開始,輸出從fro...