JAVA----编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符
2024-08-29 15:12:20
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
最新文章
- 设计模式(七)适配器模式(Adapter Pattern)
- Maven远程仓库的配置
- Android将应用调试log信息保存在SD卡
- 突袭HTML5之WebGL 3D概述
- jq 获取元素的宽度时,如何取得小数部分
- 使用ACE_Task管理线程
- C#委托(Action、Func、predicate)
- 重构第8天:使用委托代替继承(Replace Inheritance with Delegation)
- python中list注意事项
- iOS ARC环境下dealloc的使用
- Java 关于 == 和 equal()的区别
- Java基于Servlet过虑器
- ThinkPHP - 关联模型 - 多对多
- 天兔(Lepus)监控系统慢查询分析平台安装配置
- java 类与类之间的关系 及uml图
- tomcat配置管理员-走后门
- 因 URL 意外地以“/HelloWorld”结束,请求格式无法识别
- Android 获取某apk的签名信息,可用作防盗版进入。
- 多标签caffe重新编译
- 学习笔记:The Log(我所读过的最好的一篇分布式技术文章)
热门文章
- undefined function mysql_connect()解决方法
- Registering iOS Devices for Testing - 注册测试设备
- jackson反序列化时忽略不需要的字段
- sitemesh学习笔记(1)
- Windows 8.1 去掉库的方法
- 设计模式--外观(Facade)模式
- 【WP8】扩展CM的WindowManager
- ASP.NET的路由
- iOS7 UI兼容 导航栏按钮边框 UINavigationItem left and right padding
- Linux修改命令提示符(关于环境参量PS1)