劍指38 字串的組合 拓展

2021-08-19 06:42:38 字數 523 閱讀 6271

求字元的所有組合,例如輸入abc, 則他們的所有組合有a、b、c、ab、ac、bc、abc。

如果輸入n個字元,則這n個字元所構成長度為1的組合,長度為2的組合,......,長度為n的組合。求n個字元的長度為m(1<=m<=n)的組合的時候,我們把這n個字元分成兩部分:第乙個字元和其餘的所有字元。如果組合中包含第乙個字元,則下一步在剩下的字元例選取m-1個字元;如果組合裡不包含第乙個字元,則在剩下的字元裡選取m個字元。也就是說,我們可以把求n個字元組成長度為m的組合問題分解成兩部分,分別求n-1個字串中長度為m-1的組合,以及求n-1個字元的長度為m的組合。這兩種方式都可以用遞迴的方式解決。

static int num= 1;

void combination(char *string, int number, vector&result);

void combination(char *string)

void combination(char *string, int number, vector&result)

cout<

劍指38 字串的排列

輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串 abc,則列印出由字元 a,b,c 所能排列出來的所有字串 abc,acb,bac,bca,cab 和 cba。示例 輸入 abc 輸出 abc acbbac bcacab cba有要求排序,則需要將字串所有字元取出生成等長的char...

劍指offer python版 38 字串的排列

輸入乙個字串,列印出該字串中字元的所有排列。如輸入abc,則列印出abc acb bac cab cba class solution def permutation self,s if s none return iflen s 1 return list s else result a s 1 ...

劍指Offer 38 字串的排列

輸入乙個字串,列印出該字串中字元的所有排列。例 輸入 abc 輸出 abc acb bac cab cba 長度為n的字串的排列若是集合s,其中一種排列的字串為 s2,sn s2 sn 再插入sn 1s sn 1 則有對於乙個字串有n 1個插入位置。因此,解題思路就是每次遞迴加入乙個字元,直到字串全...