js字符串的字典序_27. 字符串的排列
? ? ? ?輸入一個(gè)字符串,按字典序打印出該字符串中字符的所有排列。例如輸入字符串a(chǎn)bc,則打印出由字符a,b,c所能排列出來的所有字符串a(chǎn)bc,acb,bac,bca,cab和cba。
? ??輸入描述:
????????輸入一個(gè)字符串,長(zhǎng)度不超過9(可能有字符重復(fù)),字符只包括大小寫字母。
1、思路
????????我們求整個(gè)字符串的排列,可以看成兩步:首先求所有可能出現(xiàn)在第一個(gè)位置的字符,即把第一個(gè)字符和后面所有的字符交換。如下圖所示:
????????上圖就是分別把第一個(gè)字符a和后面的b、c等字符交換的情形。首先固定第一個(gè)字符,求后面所有字符的排列。這個(gè)時(shí)候我們?nèi)园押竺娴乃凶址譃閮刹糠?#xff1a;后面的字符的第一個(gè)字符,以及這個(gè)字符之后的所有字符。然后把第一個(gè)字符逐一和它后面的字符交換。
第一步是確定第一個(gè)位置的字符,就是第一個(gè)位置與后邊的所有字符進(jìn)行交換。
第二步,就是對(duì)除了第一個(gè)位置的后邊所有位置的字符進(jìn)行相同處理;直至剩下一個(gè)字符,打印;
具體的算法流程如下
遞歸的出口,就是只剩一個(gè)字符的時(shí)候,遞歸的循環(huán)過程,就是從每個(gè)子串的第二個(gè)字符開始依次與第一個(gè)字符交換,然后繼續(xù)處理子串,如果有重復(fù)的,然后對(duì)結(jié)果使用set去重就可以了
2. 代碼:
??
推薦閱讀:
★?求職經(jīng)驗(yàn):點(diǎn)這里
★?算法刷題:點(diǎn)這里
★?投資理財(cái):點(diǎn)這里
★?AI很簡(jiǎn)單:
★?掃盲科普:點(diǎn)這里
???◆???◆???◆???◆???◆???◆???◆???◆???◆???◆???◆??
?????
總結(jié)
以上是生活随笔為你收集整理的js字符串的字典序_27. 字符串的排列的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ((ios开发学习笔记 十))代码实现自
- 下一篇: 单击触发jquery.autocompl