JAVA----编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符
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
JAVA----编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符的更多相关文章
- 三种java 去掉字符串中的重复字符函数
三种java 去掉字符串中的重复字符函数 public static void main(string[] args) { system.out.println(removerepeatedchar( ...
- c# 过滤字符串中的重复字符
有字符串"a,s,d,v,a,v",如果想去除其中重复的字符,怎么做? 下面是一个方法,用Hashtable来记录唯一字符,排除重复字符,仅供参考. 1.过滤方法: public ...
- 使用Set去除String中的重复字符
使用Set去除String中的重复字符 public class test14 { public static void main(String[] args) { String str = &quo ...
- Java编程-第一个Java程序
Java编程用到的IDE是Eclipse. 关于第一个Java程序实现的简单流程: (1) 下载eclipse (2) File-New-Java Project 命名工程名字:Hello ...
- oracle如何去除字符串中的重复字符
create or replace function remove_rame_string(oldStr varchar2, sign varchar2) return varchar2 is /** ...
- 用Java代码列出一个目录下所有的文件
1.File类 File类在java.io.File包中,所以要导入这个包. File类中用到的方法: boolean isDirectory() 测试此抽象路径名表示的文件是否是个目录 ...
- 《Java练习题》Java编程题合集(全)
前言:不仅仅要实现,更要提升性能,精益求精,用尽量少的时间复杂度和空间复杂度解决问题. 初学者: <Java练习题>习题集一 https://www.cnblogs.com/jssj/ ...
- 如何用 Java 代码列出一个目录下所有的文件?
如果只要求列出当前文件夹下的文件,代码如下所示: import java.io.File; class Test12 { public static void main(String[] args) ...
- 如何用Java代码列出一个目录下所有的文件?
目录文件夹 File file=new File("H:\\"); for(File temp:file.listFiles()){//Java5的新特性之一就是增强的for循环. ...
随机推荐
- DDD:Can I DDD?
下面是<实现领域驱动>的作者给出的一段话: You can implement DDD if you have: A passion for creating excellent soft ...
- Xcode 报错信息
1.CUICatalog: Invalid asset name supplied: 原因是: 使用的方法[UIImage imageNamed:@""]; @"&quo ...
- 禁止苹果浏览器Safari将数字识别成电话号码的方法
偶然发现用ipad访问我的网站时,发现网站上的一串数字变颜色了(原来是红色的),现在变成了蓝色.一开始以为网站出了什么问题,后来在PC端查看,发现颜色依旧是红色.在ipad上点击还会弹出菜单呼叫的选项 ...
- KMP算法 --- 深入理解next数组
在KMP算法中有个数组,叫做前缀数组,也有的叫next数组. 每一个子串有一个固定的next数组,它记录着字符串匹配过程中失配情况下可以向前多跳几个字符. 当然它描述的也是子串的对称程度,程度越高,值 ...
- 设置数据库为SINGLE_USER模式,减少锁定时间
--SQL Server开启READ_COMMITTED_SNAPSHOT ----设置数据库为SINGLE_USER模式,减少锁定时间 ALTER DATABASE ENDV_SOA SET SIN ...
- C#设计模式——模板方法(Template Method)
一.概述在软件开发中,对某一项操作往往有固定的算法结构,而具体的子步骤会因为不同的需要而有所不同.如何可以在稳定算法结构的同时来灵活应对子步骤变化的需求呢?二.模板方法模板方法是一种常见的设计模式,它 ...
- asp.net中绘制大数据量的可交互的图表
在一个asp.net项目中要用到能绘制大数据量信息的图表,并且是可交互的(放大.缩小.导出.打印.实时数据),能够绘制多种图形. 为此进行了多方调查预研工作,预研过微软的MsChart图表组件.基于j ...
- enum to IEnumerable<T>
想foreach一个枚举,发觉它特别复杂,因此先把枚举转换为IEnumerable接口之后,简单多了.下面是枚举(enum)转换为IEnumerable接口方法: 使用:修改这篇<程序一旦发觉写 ...
- 自定义控件开发的调试及DesignMode的状态处理
在开发Winform程序的时候,我们往往需要根据需要做一些自定义的控件模块,这样可以给系统模块重复利用,或者实现更好的效果等功能.但在使用的时候,我们又往往设计时刻发现一些莫名其妙的错误,那么我们该如 ...
- Titanium开发环境搭建第二个坑
1. build时总提示 --key-password <keypass> 参数没传,不填又说密码不对,填对了又说没传,应该是ide的问题,暂时不知怎样去设置该命令参数: 2. 继续去T ...