找到乙個數的所有字典序即字串的全排列

2021-07-07 08:09:45 字數 751 閱讀 8819

字典序:對於數字1、2

、3......n

的排列,不同排列的先後關係是從左到右逐個比較對應的數字的先後來決定的。例如對於

5個數字的排列 

12354

和12345

,排列12345

在前,排列

12354

在後。按照這樣的規定,

5個數字的所有的排列中最前面的是

12345

,最後面的是 

54321

。字典排序演算法:

1、首先我們對整個序列進行乙個快速排序,得到乙個公升序列;

2、找到排列中最後的乙個公升序的首位位置i,

得到該值為

s[i]

3、找到i

值右側比

s[i]

大的數中的最小值

s[j]

4、交換s[i]

與s[j].

5、將第i+1

位到最後的部分翻轉。

**:

#include #include //快速排序

void quicksort(int s,int l,int r)

return count;

}//翻轉字串

void reverse(int s,int begin,int end)

結果:

給定乙個字串,找到包含該字串所有字元的最短子串

這題是豌豆莢二面的乙個演算法題,和leetcode的某些題目類似。其思路是這樣的 首先遍歷一次字串,求出字串不同字元的數目 為每乙個字元儲存乙個列表,記錄該字元在字串 現的索引 記錄待求字串的首字母的索引start 初始值為0 結束索引end 初始值為length 1 記錄可能的待求字串的首字母的索...

拼接所有的字串產生字典序最小的字串

拼接所有的字串產生字典序最小的字串 給定乙個字串的陣列strs,請找到一種拼接順序,使得所有的字串拼接起來組成的字串是所有可能性中字典序最小的,並返回這個字串。輸入描述 輸入包含多行,第一行包含乙個整數n 1 n 1 05 n 1 leq n leq 10 5 n 1 n 105 代表字串陣列str...

乙個數的所有因子 Python

給定乙個自然數 n,求這個自然數的所有因子 包括1 注意 一般認為,因子就是所有可以整除這個自然數的整數,不包括這個數自身。求乙個自然數的所有因子 python 問題分析 從1到n,依次對n取餘,如果這個數是它的因子,則保留。然後對 n,i,更新重新此過程,直到結束 考慮重複新增情況 time 20...