Problem: Compute all permutations of a string of unique characters.

此题用循环的方式不好做,下面是一种递归的思路:

把给的字符串看成一个字符集合,每次从这个集合里拿出一个字符来填到下面的空格中。填的顺序从左到右。

把a1填到第一个空格里是一种情况,集合剩下的部分填到2-9的空格里;

把a2填到第一个空格里是一种情况,集合剩下的部分填到2-9的空格里;

。。。。。。

这样递归的进行下去,直到集合里没有剩余,所有的情况就被穷尽了。

    public ArrayList<String> getPerms(String str){
ArrayList<String> result = new ArrayList<String>();
getPerms("", str, result);
return result;
} public void getPerms(String prefix, String str, ArrayList<String> result){
if(str == null || str.length() == 0){
result.add(prefix);
return;
} for(int i = 0; i < str.length(); ++i){
char ch = str.charAt(i);
getPerms(prefix+ch, str.substring(0, i) + str.substring(i+1), result);
}
}

最新文章

  1. ImportError: cannot import name &#39;check_arrays&#39;
  2. 3.Complementing a Strand of DNA
  3. C#语言基础-类——string增加内容
  4. 动手学习TCP: 环境搭建
  5. LAMP虚拟主机配置以及控制目录访问
  6. mergeIDE
  7. C/C++遍历目录下的所有文件(Windows篇,超详细)
  8. admin的基础配置
  9. Java经典编程题50道之十七
  10. 机器学习基石:06 Theory of Generalization
  11. Cookie、sessionStorage、localStorage的区别
  12. 发现了一个非常棒的pyqt5的例子集
  13. Python高级笔记(一) -- GIL (全局解释器锁)
  14. python Cookie Session 相关用法
  15. SSH学习
  16. python3 字典update与deepcopy
  17. JS继承(一)
  18. Python 的 14 张思维导图汇总
  19. Expected value at 1:0 异常解决方法
  20. D - Bridge

热门文章

  1. VSPackge插件系列:如何正确获取DTE
  2. 关于JFace中的向导式对话框(WizardDialog类)
  3. 之前做web性能优化的一些个人心得
  4. CSS经典布局-圣杯布局、双飞翼布局
  5. Cordova+angularjs+ionic+vs2015开发(四)
  6. 利用wireshark抓取Telnet的用户名和密码
  7. ###《More Effective C++》- 基础议题
  8. navagationController 的子控制器如何取消右滑返回
  9. Java实战之03Spring-02Spring的核心之IoC
  10. 《C和指针》