Advertisement

Python中字符串的全排列(实现方式:递归和非递归)

阅读量:

字符串全排列生成方法

针对给定的字符串S[0…N-1],需要构思一种算法方案,用以生成该字符串的所有可能排列形式。

一、递归方式

分析思路:

将s[0]置于位置0,对[1,n-1]范围内的元素进行全排列(递归处理)
将s[1]置于位置0(即与s[0]交换位置),对[1,n-1]范围内的元素进行全排列(递归处理)
……
若第i个元素在先前步骤中已被使用,则予以跳过
……
将s[n-1]置于位置0(即与s[0]交换位置),对[1,n-1]范围内的元素进行全排列(递归处理)

Python代码如下:

复制代码
    from copy import deepcopy
    
    
    def isduplicate(li, n, t):
    """
    从li的位置n到位置t-1,有没有和li[t]相等的数字
    """
    while n < t:
        if li[n] == li[t]:
            return True
        n += 1
    return False
    
    
    def swap(li, i, j):
    if i == j:
        return
    temp = l

全部评论 (0)

还没有任何评论哟~