全排列问题
这里主要依据我个人刷题过程中遇到的全排列类似问题,例如子集, 下一个排列等等,对于这一类问题
字符串和数字全排列代码完全相同,但要注意是否存在重复字母、数字:
对于重复元素问题,有两种解决方法:
1.在加入元素的时候:判断一下该元素是否已存在;
2.在完成后利用set去重复;
字符串全排列:注意可能存在相同的字母,或者要求字典序:
class Solution:
def Permutation(self, ss):
# write code here
if not ss: return []
res = []
def helper(nums, tmp):
#若nums取空,表示得到了一个排列
if not nums:
res.append(tmp)
for i in range(len(nums)):
#递归这里注意:前面是除了当前元素之外的元素
helper(nums[:i]+nums[i+1:], tmp + nums[i] )
helper(ss,'')
return list(sorted(set(res)))#这里是为了字典序和去重
数字全排列(存在重复元素)
class Solution(object):
def p