劍指offer 面試題38 字串的排列

2021-10-06 21:43:46 字數 1027 閱讀 9429

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

輸入描述:

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

import itertools

class solution:

# def permutation(self, ss):

# 法一:掉包

# # write code here

# if ss == '':

# return

# lst = list(itertools.permutations(ss,len(ss)))

# for i in range(len(lst)):

# lst[i] = ''.join(lst[i])

# l = list(set(lst))

# return (sorted(l))

def permutation

(self, ss)

: #法二:遞迴

list =

iflen

(ss)

<=1:

return ss

for i in range

(len

(ss)):

for j in map

(lambda x: ss[i]

+x, self.

permutation

(ss[

:i]+ss[i+1:

])):

if j not in list:

list.

(j)return list

s=solution()

print

(s.permutation

("abcd"

))

劍指offer 面試題38 字串的排列

輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。ps 輸入乙個字串,長度不超過9 可能有字元重複 字元只包括大小寫字母。其實就是對字串全排列,然後放到 treeset 中。放到tre...

劍指Offer 面試題38 字串的排列

輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。思路 遞迴思路。迴圈固定第乙個位置字母,則後面的排序數等於其餘字元的排序。對其餘字元也一樣進行這樣的操作。最後使用set去重,並排序。...

《劍指offer》面試題38 字串的排列

思路 1.我們求整個字串的排列,可以看成兩步 首先求出所有可能出現在第乙個位置的字元,即把第乙個字元和後面所有的字元交換。2.第二步固定第乙個字元,求後面所有字元的排列。這個時候我們仍把後面的所有字元分成兩部分 後面字元的第乙個字元,以及這個字元之後的所有字元。然後把第乙個字元逐一和它後面的字元交換...