38. 字符串的排列

输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。

示例:

输入:s = "abc"
输出:["abc","acb","bac","bca","cab","cba"]

思路:本问题可以利用回溯法的思想解决。
我们不知道它明确的计算法则。而是先进行试探,试探到最终状况,发现不满足问题的要求,则回溯到上一个状态继续试探。
这种不断试探和回溯的思想,称为回溯法(Backtrcking)。
class Solution: 
    def permutation(self, nums: List[int]) -> List[List[int]]:
        res=[]
        nums = sorted(nums)
        def helper(nums,temp):
            if not nums:
                res.append(temp)
            for i in range(len(nums)):
                if i>0 and nums[i]==nums[i-1]:
                    continue
                helper(nums[:i]+nums[i+1:],temp+[nums[i]])
        helper(nums,[])
        return res

参考博客:https://blog.csdn.net/summer_dew/article/details/83921581

 
原文地址:https://www.cnblogs.com/USTC-ZCC/p/12586402.html