【題目描述】
輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則按字典序列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。
輸入描述:
輸入乙個字串,長度不超過9(可能有字元重複),字元只包括大小寫字母。示例1輸入
輸出「ab」
[「ab」,「ba」]
【字典序】
字典序(dictionary order),又稱字母序(alphabetical order),原意是表示英文單詞在字典中的先後順序,在計算機領域中擴充套件成兩個任意字串的大小關係。【官方**】下列單詞就是按照字典序進行排列的:
as aster astrolabe astronomy astrophysics at ataman attack baa
// for迴圈和swap的含義:對於「abc」,
// 第一次'a' 與 'a'交換,字串為"abc", pos為0, 相當於固定'a'
// 第二次'a' 與 'b'交換,字串為"bac", pos為0, 相當於固定'b'
// 第三次'a' 與 'c'交換,字串為"cba", pos為0, 相當於固定'c'
for(
int i = pos; i < s.
length()
;++i)
} vector
permutation
(string s)
; set ret;
perm(0
, s, ret)
;return vector()
;}};
【b站**】
class
solution
void
dfs(string &str,
int idx,
int start,
int state)
//單個排列沒有排完
//相同字母而言 前後關係
//可能重複排序
//通過控制相對順序不變確保不重複
if(idx ==
0|| str[idx]
!= str[idx -1]
) start =0;
//順序往後
for(
int i = start; i < str.
size()
; i ++)if
(!(state >> i &1)
)}};
//注意左移右移 和 操作符&
/(ㄒoㄒ)/~~感覺這題不簡單呀 JZ27 字串的排列
知識點 遞迴 全排列 題目鏈結 題目描述 輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則按字典序列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。輸入乙個字串,長度不超過9 可能有字元重複 字元只包括大小寫字母。示例1 輸入 ab...
JZ27 劍指offer 字串的排列
題目描述 輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則按字典序列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。class solution def permutation self,s str list str c,res l...
27 字串的排列
題目 輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。思路 全排列,採用遞迴。1 首先,我們固定第乙個字元a,求後面兩個字元bc的排列 2 當兩個字元bc排列求好之後,我們把第乙個字...