字符串的全排列和组合算法

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个字符的组合,再加个循环就好了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,823评论 18 399
  • 查理芒格在一次演讲中说过他不能告诉同学如何才能得到幸福,但能够根据个人经验告诉他们如何过上痛苦的生活: 要反复无常...
    anghoo阅读 848评论 3 2
  • 不知不觉已经五月份了,处于南北交界的小县城的阴雨天还有些凉,此时窗外的细雨停驻了下来。 在李虹光着身子系着围裙在厨...
    夜半独上高楼阅读 275评论 2 3