劍指offer 27 字串的排列 Python

2021-10-06 14:33:20 字數 919 閱讀 1426

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

輸入描述:

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

全排列:從n個不同元素中任取m(m≤n)個元素,按照一定的順序排列起來,叫做從n個不同元素中取出m個元素的乙個排列。當m=n時所有的排列情況叫全排列。

將字串中的每個元素都當做起始位置,並把其他元素都作為剩餘部分,進行遞迴,實現全排列。

結果是所有排列,不重複,直接設定乙個set;

字典序:sorted;

遞迴實現:固定乙個元素,其他的元素全排列。(將字串中的每個元素都當做起始位置,並把其他元素都作為剩餘部分,進行遞迴,實現全排列。)

# -*- coding:utf-8 -*-

class

solution

:def

permutation

(self, ss)

:# write code here

iflen

(ss)

<=1:

return ss

res =

set(

)for i in

range

(len

(ss)):

for j in self.permutation(ss[

:i]+ ss[i+1:

]): res.add(ss[i]

+ j)

return

sorted

(res)

劍指offer 27 字串的排列

輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。輸入描述 輸入乙個字串,長度不超過9 可能有字元重複 字元只包括大小寫字母。時間限制 1秒 空間限制 32768k 熱度指數 2992...

《劍指Offer》27 字串的排列

題目 27.字串的排列 知識點 字串 回溯演算法 題目描述 輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。解題思路 主要是使用回溯演算法的思想,通過遞迴從後向前將字串分為固定部分和...

劍指offer(27)字串的排列

輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。輸入描述 輸入乙個字串,長度不超過9 可能有字元重複 字元只包括大小寫字母。這題還算可以,關於全排列,有兩種解法,第一種就是遞迴全排列...