package com.pb.demo.packclass.demo1;

import java.util.HashSet;
/**
* 编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符
例如:
原始字符串是"abc",打印得到下列所有组合情况
"a" "b" "c"
"ab" "bc" "ca" "ba" "cb" "ac"
"abc" "acb" "bac" "bca" "cab" "cba"
* @author Denny
* 思路:
* 1.截取字符串,每次载取一个
* 2.把截取到的一个做的前缀,添加到集合中
* 3.和剩下的组合
* 4.长度为1时,用前缀和剩下的组合添加到集合
* 5.使用递归
*
*/
public class Demo9 { static HashSet<String> set=new HashSet<String>();
public static void main(String[] args) {
String s="abc";
getString(s,""); System.out.println(set);
System.out.println(set.size());
}
public static void getString(String s,String pre){
if(s.length()==1){
set.add(pre+s);
return;
}else{
for (int i = 0; i < s.length(); i++) {
StringBuilder sb=new StringBuilder(s);
String str=pre+s.substring(i, i+1);
set.add(str);
getString(sb.deleteCharAt(i).toString(),str);
}
}
} }

结果:

[a, ab, acb, bc, bca, ac, b, abc, c, cba, bac, cab, ca, ba, cb]
15

最新文章

  1. 设计模式(七)适配器模式(Adapter Pattern)
  2. Maven远程仓库的配置
  3. Android将应用调试log信息保存在SD卡
  4. 突袭HTML5之WebGL 3D概述
  5. jq 获取元素的宽度时,如何取得小数部分
  6. 使用ACE_Task管理线程
  7. C#委托(Action、Func、predicate)
  8. 重构第8天:使用委托代替继承(Replace Inheritance with Delegation)
  9. python中list注意事项
  10. iOS ARC环境下dealloc的使用
  11. Java 关于 == 和 equal()的区别
  12. Java基于Servlet过虑器
  13. ThinkPHP - 关联模型 - 多对多
  14. 天兔(Lepus)监控系统慢查询分析平台安装配置
  15. java 类与类之间的关系 及uml图
  16. tomcat配置管理员-走后门
  17. 因 URL 意外地以“/HelloWorld”结束,请求格式无法识别
  18. Android 获取某apk的签名信息,可用作防盗版进入。
  19. 多标签caffe重新编译
  20. 学习笔记:The Log(我所读过的最好的一篇分布式技术文章)

热门文章

  1. undefined function mysql_connect()解决方法
  2. Registering iOS Devices for Testing - 注册测试设备
  3. jackson反序列化时忽略不需要的字段
  4. sitemesh学习笔记(1)
  5. Windows 8.1 去掉库的方法
  6. 设计模式--外观(Facade)模式
  7. 【WP8】扩展CM的WindowManager
  8. ASP.NET的路由
  9. iOS7 UI兼容 导航栏按钮边框 UINavigationItem left and right padding
  10. Linux修改命令提示符(关于环境参量PS1)