題目:輸入乙個字串,列印出該字串中字元的所有排列。
例如輸入字串abc,則列印由字元a,b,c所能排列出來的所有字串:abc,abc,bac,bca,cab,cba
我們求整個字串的排列,可以看成兩步:首先求出所有可能出現在第乙個位置的字元,即把第乙個字元和後面所有的字元交換。下圖就是分別把第乙個字元a和後面的b,c交換的情景。第二步固定第乙個字元,求後面所有字元的排列。這個時候我們仍把後面的所有字元分成兩部分:後面字元的第乙個字元,以及這個字元之後的所有字元。然後把第乙個字元逐一和它後面的字元交換……
注:(a)把字串分為兩部分,一部分是字串的第乙個字元,另一部分是第乙個字元以後的所有字元。接下來我們求陰影部分的字串的排列。(b)拿第乙個字元和它後面的字元逐個交換。
public
class e28stringpermutation
public
void permutation(char arr,int index,int size)
system.out.println();
} else
} }
public
static
void main(string args)
}
面試題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.分析 我們可以講字串看成兩部分組成,第一部分為第乙個字元,第二部分是後面所有的字元。首先求所有可能出現在第一位置的字元,即把第乙個字元和後面所有的...
面試題38 字串的排列
問題1 輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。思路 abcde 第一輪,a與b交換,a與c交換,a與d交換,a與e交換,其中a每次都要回到原來的位置 第二輪,a固定,bcd...