1. 排列
链接
注意字符重复与非重复两种情况的区别。
非递归实现有点麻烦
2. 组合
2.1 什么是组合
有abc
得 null,a, b, c, ab, ac, bc, abc
2.2 递归的思路
假设我们想在长度为n的字符串中求m个字符的组合。我们先从头扫描字符串的第一个字符。针对第一个字符,我们有两种选择:第一是把这个字符放到组合中去,接下来我们需要在剩下的n-1个字符中选取m-1个字符;第二是不把这个字符放到组合中去,接下来我们需要在剩下的n-1个字符中选择m个字符。这两种选择都很容易用递归实现。
由于组合可以是0个字符的组合,1个字符的组合,2个字符的字符……一直到n个字符的组合,再加个循环就好了。