黑马程序员技术交流社区
标题:
编程列出一个字符串的全字符组合情况(绝对原创)
[打印本页]
作者:
侯晓谦
时间:
2015-6-21 19:44
标题:
编程列出一个字符串的全字符组合情况(绝对原创)
public class Test {
public static void main(String[] args) {
//接收系统的输入数据
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
Set<String> set = new HashSet<String>();
//调用函数show,将全字符组合情况存入set
show(str, set);
//遍历set,输出结果
Iterator it = set.iterator();
while (it.hasNext()) {
String data = (String) it.next();
System.out.println(data);
}
}
public static void show(String str, Set set) {
//将需要处理的字符串转为字符数组
char[] c = str.toCharArray();
Map<Integer, String> map = new HashMap<Integer, String>();
//循环取字符串中的每一个字符
for (int i = 0; i < c.length; i++) {
Iterator it = set.iterator();
Integer mapKey = 0;
//如果set不为空,遍历set中每个字符串
while (it.hasNext()) {
String data = (String) it.next();
StringBuffer strBuf = new StringBuffer(data);
//在set中每个字符串中的任意位置插入最外层for循环取得的字符
for (int j = 0; j <= strBuf.length(); j++) {
StringBuffer strBuf1 = new StringBuffer(data);
strBuf1.insert(j, c[i]);
//将插入字符而形成的新的字符串放入map
map.put(mapKey, strBuf1.toString());
mapKey ++ ;
}
}
//将map中的字符串放入set
if (map != null) {
for (int k = 0; k <map.size(); k++) {
set.add(map.get(k));
}
}
//将字符存入set中
set.add(c[i]+"");
}
}
}
作者:
侯晓谦
时间:
2015-6-21 19:45
望大神找出bug,不吝赐教
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2