python实现字符串全排列

字符串全排列

方法一

def permutation(arr, start):  #start 代表子字符串的首位置索引
    if arr == None:
        return
    if start == len(arr)-1:
        print(''.join(arr))  # 完成全排列后输出当前排列的字符串
    else:
        i = start
        while i < len(arr):
            arr[start], arr[i] = arr[i], arr[start]  # 交换start与i所在位置的字符
            permutation(arr, start + 1)  # 固定第一个字符,对剩余的字符进行全排列
            arr[start], arr[i] = arr[i], arr[start]  # 还原start与i所在位置的字符
            i += 1

arr = ['a','b','c']
permutation(arr,0)

在这里插入图片描述

方法二

def permutation(s):
    if len(s) <= 1:
        return [s]
    else:
        temp_list = []
        for i in range(len(s)):  # 遍历字符串 s 中的每个字符
            for j in permutation(s[0:i] + s[i+1:]):  # 把除了s[i]字符以外的字符组成字符串然后让它迭代
                temp_list.append(s[i]+j)
        return temp_list

在这里插入图片描述
方法一中传入的参数是列表,输出的是字符串
方法二中传入的参数是字符串,输出的是列表

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值