剑指offer38.字符串的排列

输入一个字符串,打印出该字符串的所有排列

思路:分两步,第一步求所有可能出现在第一个位置的字符,即把第一个字符和后面的所有字符交换。第二步固定第一个字符,求后面所有字符的排列。对后面所有字符的排列同样也是这两步。递归

def my_permutation(s):
    str_set = []
    ret = []  # 最后的结果

    def permutation(string):
        for i in string:
            str_tem = string.replace(i, '')
            str_set.append(i)
            if len(str_tem) > 0:
                permutation(str_tem)
            else:
                ret.append(''.join(str_set))
            str_set.pop()

    permutation(s)
    return ret

你可能感兴趣的:(剑指offer38.字符串的排列)