如何用Python实现一个字符串所有排列的生成方法?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1445个文字,预计阅读时间需要6分钟。
题目描述:设计一个程序,当输入一个字符串时,要求输出这个字符串的所有排列。
例如,输入字符串 abc,要求输出由字母 a、b、c 所能排列出来的所有字符串,如 abc、acb、bac、bca、cab、cba。
题目描述:
设计一个程序,当输入一个字符串时,要求输出这个字符串的所有排列。
例如输入字符串 abc,要求输出由字母 a、b、c 所能排列出来的所有字符串 abc,acb,bac,bca,cab,cba。
方法:递归法
以字符串 abc 为例介绍对字符串进行全排列的方法。
(1) 首先固定第一个字符 a,然后对后面的两个字符 b、c 进行全排列;
(2) 交换第一个字符与其后面的字符,即交换 a 与 b,然后对后面的两个字符 a与c 进行全排列;
(3) 由于第二步交换了 a与b 破坏了字符串原来的顺序,所以需要再次交换 a与b 使其恢复到原来的顺序,然后交换第一个字符与第三个字符(交换a和c),接着固定第一个字符c,对后面的两个字符 a与b 求全排列。
在对字符串求全排列的时候就可以采用递归的方式求解。
本文共计1445个文字,预计阅读时间需要6分钟。
题目描述:设计一个程序,当输入一个字符串时,要求输出这个字符串的所有排列。
例如,输入字符串 abc,要求输出由字母 a、b、c 所能排列出来的所有字符串,如 abc、acb、bac、bca、cab、cba。
题目描述:
设计一个程序,当输入一个字符串时,要求输出这个字符串的所有排列。
例如输入字符串 abc,要求输出由字母 a、b、c 所能排列出来的所有字符串 abc,acb,bac,bca,cab,cba。
方法:递归法
以字符串 abc 为例介绍对字符串进行全排列的方法。
(1) 首先固定第一个字符 a,然后对后面的两个字符 b、c 进行全排列;
(2) 交换第一个字符与其后面的字符,即交换 a 与 b,然后对后面的两个字符 a与c 进行全排列;
(3) 由于第二步交换了 a与b 破坏了字符串原来的顺序,所以需要再次交换 a与b 使其恢复到原来的顺序,然后交换第一个字符与第三个字符(交换a和c),接着固定第一个字符c,对后面的两个字符 a与b 求全排列。
在对字符串求全排列的时候就可以采用递归的方式求解。

