解体思路::将求字符串的全排列分解为两步: 
第一步是确定第一个位置的字符,就是第一个位置与后边的所有字符进行交换。 
第二步,就是对除了第一个位置的后边所有位置的字符进行相同处理;直至剩下一个字符,打印;

代码如下:

def permutation(string, n, target):
    if n==len(string)-1:
        target.append("".join(string))
        return
    for i in range(n, len(string)):
        string[n],string[i]=string[i],string[n]
        permutation(string, n+1,target)
        #还原之前的顺序
        string[n], string[i] = string[i], string[n]


string=list(input().strip())
target=[]
permutation(string, 0, target)
print(target)