面試題28 字串的排列

2022-04-28 19:00:12 字數 500 閱讀 7433

題目:輸入乙個字串,列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a、b、c所能排列出來

的所有字串abc、acb、bac、bca、cab和cba。

本題擴充套件:

如果不是求字元的所有排列,而是求字元的所有組合,應該怎麼辦?

還是輸入三個字元a、b、c,則它們的組合有a、b、c、ab、ac、bc、abc,當交換字串中的兩個字元時,雖然能得到兩個不同的排列,但

卻是同乙個組合。比如ab和ba是不同的排列,但只算乙個組合。

如果輸入n個字元,則這n個字元能構成長度為1的組合,長度為2的組合、......、長度為n的組合。在求n個字元的長度為m(1<=m<=n)的組合的時候,我們

則下一步在剩餘的n-1個字元裡選取m個字元。也就是說,我們可以把求n個字元組成長度為m的組合的問題分解成兩個子問題,分別求n-1個字串中長度為m-1的

組合,以及求n-1個字元的長度為m的組合。這兩個子問題都可以用遞迴的方式解決。

面試題28 字串排列

輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。結果請按字母順序輸出。輸入描述 輸入乙個字串,長度不超過9 可能有字元重複 字元只包括大小寫字母。1 class solution 1...

面試題28 字串的排列

1.輸入乙個字串,列印出該字串中字元的所有排列,例如輸入字串abc,則列印出字元a,b,c的所有可能排列,abc,acb,bac,bca,cab,cba.分析 我們可以講字串看成兩部分組成,第一部分為第乙個字元,第二部分是後面所有的字元。首先求所有可能出現在第一位置的字元,即把第乙個字元和後面所有的...

面試題28 字串的排列

題目 輸入乙個字串,列印出該字串中字元的所有排列。例如輸入字串abc,則列印出字元a b c所能排列出來的所有字串abc acb bac bca cab cba。這是乙個典型的遞迴問題,考慮如何將複雜問題分解成簡單問題,最後通過遞迴解決。我們肯定有這樣的經驗,自己在寫abc的全排列的時候,肯定會想首...