題目:輸入乙個字串,列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a、b、c所能排列出來的所有字串abc、acb、bac、bca、cab、和cba。
解法:遞迴實現
從字串中選出乙個字元作為排列的第乙個字元,然後對剩餘的字元進行全排列。如此遞迴下去,從而得到所有字元的全排列。
第一步:首先求所有可能出現在第乙個位置的字元。
第二步:固定第乙個字元,求後面所有字元的排列。
1)將a固定在第一位,求後面bc的排列,得到:「abc」和「acb」
2)將b固定在第一位,求後面ac的排列,得到:「bac」和「bca」
3)將c固定在第一位,求後面ba的排列,得到:「cba」和「cab」
**如下:
劍指Offer28 字串排列問題
輸入乙個字串,列印出該字串中字元的所有排列。例如輸入字串abc,則列印出字元a b c所能排列出來 的所有字串abc bac bca cab cba。求整個字串的全排列,可以看成兩步 第一步 首先求所有可能出現在第乙個位置的字元,即把第乙個字元和後面所有的字元交換 第二步 固定第乙個字元,求後面所有...
面試題 劍指Offer 28 字串的全排列
昨天做了一套cvte的面試題,最後乙個題目就是字串的全排列。做過劍指offer的童鞋一眼就可以看出這是劍指offer 28題 原題目,一點都沒變 把字串看成兩個部分,第乙個部分為第乙個字元,剩下的是後面的字元 首先將所有可能出現在第乙個位置的字元,將這些字元在每次迴圈的時候和第乙個字元交換 先固定乙...
全排列問題 劍指offer28
求全排列的步驟 兩步,無重複字元的情況 1.求出所有可能在第乙個位置的陣列,即吧第乙個字元和後面的所有字元交換。2.固定第乙個字元,求後面所有字元的全排列。第2步中的全排列求解用到遞迴。此時,仍把後面的所有字元分成兩部分,後面字元的第乙個字元,以及這個字元之後的所有字元。然後把第乙個字元注意和他後面...