全排列,无重复字符串排序和有重复字符串排序

字符串排列组合算法解析
本文深入探讨了字符串的排列组合算法,提供了详细的Python代码实现,包括递归回溯方法,用于生成所有可能的无重复字符的字符串排列。通过具体实例,讲解了如何避免重复排列,适用于面试准备和技术提升。

面试题 08.07. 无重复字符串的排列组合.

class Solution:
    def permutation(self, S: str) -> List[str]:
        if S == '':return []
        res = []
        path = ''
        def backtrack(S, path, res):
            if S == '':
                res.append(path)
                return 

            for i in range(len(S)):
                cur = S[i]
                path=path+cur
                backtrack(S[:i] + S[i+1:], path, res)
                path=path[:-1]
                
        backtrack(S, path, res)

        return res

剑指 Offer 38. 字符串的排列.

class Solution:
   def permutation(self, s: str) -> List[str]:
       res=[]
       path=''
       def backtrack(s,path,res):
           if not s:
               res.append(path)
           dct=set()
           for i in range(len(s)):
               if s[i] in dct:
                   continue #减枝
               dct.add(s[i])
               path+=s[i]
               backtrack(s[:i]+s[i+1:],path,res)
               path=path[:-1]
       backtrack(s,path,res)
       
       return res
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值