如果给定一个字符串,如何打印出其全排列呢?
如果在C++ 中可以直接用next_permutation库函数,但是Java等高级语言中并没有这样的库函数,需要手动写出算法。我们可以用递归来实现某个字符串的全排列。
下面我们看看一个例子:
1.问题描述:
一组字符串的全排列,按照全排列的顺序输出,并且每行结尾无空格。
2.输入:
输入一个字符串
3.输入示例:
abc
4.输出示例:
abc
acb
bac
bca
cba
cab
全排列的基本思想是: 把待全排列记录分为两个部分: (1) 第一个记录 (2) 剩下的所有元素
所有记录的全排列就是所有可能出现在第一个位置的记录与剩下所有元素的全排列。 以[1,2,3]为例, 1,2,3的全排列可以看作是
1,[2,3的全排列]
[2,3]的全排列又可以看作是
2,[3的全排列]—————对应123
3,[2的全排列]—————对应132 2,[1,3的全排列]
[1,3]的全排列又可以看作是
1,[3的全排列]—————对应213
3,[1的全排列]—————对应231 3,[1,2的全排列]
[1,2]的全排列又可以看作是
1,[2的全排列]—————对应312
2,[1的全排列]—————对应321