問題:
給出乙個字串,列出所有字元的組合。
例如,xyz 所有排列組合的結果為:xyz,xzy,yxz,yzx,zxy,zyx.
邏輯分析:
先從第乙個字元起,我們列出後面每個字元可能出現的組合,然後第二個字元,列出其所有可能的組合...依次往後遞推,n個字元的組合數為n!.
**實現:
**分析:
因為在每種組合中字串的每個字元只能出現一次,所以我們用乙個boolean的陣列來標識某個字元是否已經被新增到out過。
我們用乙個stringbuilder的out來列印滿足要求的的組合。
如果out長度和給定字串的長度相等,說明我們已經得到一種排列組合,把它列印出來,然後return;
否則,對字串所有的字元進行迴圈,如果當前字元已經被新增過,則跳過這個字元,否則,把字元新增到out裡,同時標記它已經被新增,接著通過遞迴得到以其作為開頭的所有字串的組合,之後我們標記此字元已經處理結束(used[i] = false),繼續處理下乙個位置的字元,直到將整個字串都處理完畢。
對給定字串求所有的組合
輸入字串,輸出所有的組合,比如輸入abc,輸出 a b c ab ac bc abc。題目解法 abc用01串表示,001表示輸出c,111表示輸出abc,解法如下。空間複雜度n,時間複雜度為2 n 1,因為有這麼多種結果啊。package combination author administra...
字串排列組合
題目描述 輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。題目分析 考慮把這個複雜的問題分解成為小的問題。整個字串的排列,可以看成兩個部分 首先,求所有可能出現在第乙個位置的字元 然...
字串排列組合
1 字串的組合 子串行 題目 輸入乙個字串,輸出該字串中字元的所有組合。例子 輸入 abc,它的組合有 a b c ab ac bc abc 分析 我們可以將字串中的每個字元看成二叉樹的乙個節點,根節點為空,每個節點都會有兩種選擇 要 和 不要 兩種選擇 那麼我們就可以利用遞迴實現。public c...