12赞
259
当前位置:  开发笔记 > 编程语言 > 正文

python实现对一个字符串的所有排列

python实现对一个字符串的所有排列题目描述:设计一个程序,当输入一个字符串时,要求输出这个字符串的所有排列。例如输入字符串abc,要求输出由字符a、b、c所能排列出来的所

python实现对一个字符串的所有排列

题目描述:
设计一个程序,当输入一个字符串时,要求输出这个字符串的所有排列 。 例如输
入字符串 abc, 要求输出由字符 a、 b、 c 所能排列出来的所有字符串: abc,acb,bac,bca, cba ,cab 。
递归法
下面以字符串 abc 为 例介绍对字符串进行全排列的方法 。 具体步骤如下 :
(1)首先固定第一个字符 a,然后对后面的两个字符 b与 c进行全排列:
(2)交换第一个字符与其后面的字符,即交换 a与 b,然后固定第一个字符 b,接着对后面的两个字符 a与 c进行全排列;
(3)由于第( 2)步交换了 a和 b破坏了字符串原来的顺序,因此,需要再次交换 a和 b
使其恢复到原来的顺序,然后交换第一个字符与第三个字符(交换 a和 c),接着固定第一个 字符。对后面的两个字符 a 与 b 求全排列。
在对字符串求全排列的时候就可以采用递归的方式来求解,实现方法如下图所示 :
在这里插入图片描述

def swap(str,i,j):tmp=str[i]str[i]=str[j]str[j]=tmp
def Permutation(str,start):if str==None or start<0:returnif start==len(str)-1:print(" ".join(str))else:i=startwhile idef Permutation_transe(s):str=list(s)Permutation(str,0)
if __name__=='__main__':s='abc'Permutation_transe(s)

输出:
a b c
a c b
b a c
b c a
c b a
c a b

推荐阅读
author-avatar
just_roshinn5
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有