1、题目
输入一个字符串,输出该字符串中字符的所有组合。举个例子,如果输入abc,它的组合有a、b、c、ab、ac、bc、abc。
2、解题思想
首先创建combine函数,对于字符串进行处理,如果字符串为空,则直接输出;如果字符串不为空,则创建StingBuilder对象,对字符串内的每个元素进行循环处理,调用combination函数。对于combination函数,其功能就是将字符串中字符的所有组合输出。
3、Java代码
public class CombinationAll {
public static void main(String[] args) {
combine("abc");
}
public static void combine(String str) {
if (str == null) //如果字符串为空,则直接返回
return;
int length = str.length();
StringBuilder sb = new StringBuilder(); //创建字符串容器
for (int i = 0; i < length; i++) {
combination(str, 0, i, sb);
}
}
public static void combination(String str, int index, int number, StringBuilder sb) {
if (number == -1) {
System.out.println(sb.toString());
return;
}
if (index == str.length())
return;
sb.append(str.charAt(index)); //向StringBuilder中添加元素
combination(str, index + 1, number - 1, sb);
sb.deleteCharAt(sb.length() - 1); //在StringBuilder中删除元素
combination(str, index + 1, number, sb);
}
}