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