ATO 38 字串的排列

2021-09-29 21:52:47 字數 1357 閱讀 7873

輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。

輸入描述:

輸入乙個字串,長度不超過9(可能有字元重複),字元只包括大小寫字母。

無重複字元

class

solution

void

permutationrecursively

(vector<

int>

&nums,

int mstart,

int length, vectorint>

>

&res)

for(

int i = mstart; i < length; i++)}

};

有重複字元(leetcode 47)

// 基於46題,增加去重

class

solution

void

permutationrecursively

(vector<

int>

& nums,

int mstart,

int length, vectorint>

>

&res)

for(

int i = mstart; i < length; i++)}

if(duplication)

continue

;swap

(nums[mstart]

, nums[i]);

permutationrecursively

(nums, mstart+

1, length, res)

;swap

(nums[mstart]

, nums[i]);

}}};

如何求所有字元的組合數?

利用公式c(n, k) = c(n - 1, k) + c(n - 1, k - 1)

#include

using

namespace std;

typedef

long

long ll;

ll combination

(ll n, ll k)if(

1== k)

return

combination

(n -

1, k)

+combination

(n -

1, k -1)

;}intmain()

38 字串的排列

題目 輸入乙個字串,列印出該字串中字元的所有排列。def string rank string string list string if len string 1 return if len string 1 return string string rank2 string,0 def stri...

劍指38 字串的排列

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

面試題38 字串的排列

問題1 輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。思路 abcde 第一輪,a與b交換,a與c交換,a與d交換,a與e交換,其中a每次都要回到原來的位置 第二輪,a固定,bcd...