字符串的全排列python實現

1. 題目

給定一個字符串,找出有該字符串所有字符排列組成的所有字符串。

2. 方法

迭代,遍歷字符串,取遍歷的字符當作首字符,對剩下的字符組成的字符串再次進行全排列操作。

注意:有可能出現相同字符的情況,用visited來記錄首位置出現過的字符。

###

def quan_pailie(s,res=[]):
    if not s:
        return []
    elif len(s) == 1:
        return [s[0]]
    res = []
    visited = set()
    for i,item in enumerate(s):
        if item in visited:
            continue
        visited.add(item)
        new_s = s[:i] + s[i+1:]
        tmp = quan_pailie(new_s,[])
        for V in tmp:
            res.append(s[i] + V)
    return res
s = 'abbc'
print(quan_pailie(s))
print(len(set(quan_pailie(s))))

運行結果:

['abbc', 'abcb', 'acbb', 'babc', 'bacb', 'bbac', 'bbca', 'bcab', 'bcba', 'cabb', 'cbab', 'cbba']
12

參考:

  1. 劍指Offer-29-字符串的排列
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章