编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符,例如:
原始字符串是"abc",打印得到下列所有组合情况:
"a" "b" "c"
"ab" "bc" "ca" "ba" "cb" "ac"
"abc" "acb" "bac" "bca" "cab" "cba"
import java.util.ArrayList;
import java.util.List;
public class test {
static char[] chars = "abc".toCharArray();
public static void main(String[] args) {
for (int i = 0; i < chars.length; i++) {
// 取得每一个字符
List<Integer> list = new ArrayList<Integer>();
list.add(i);
play(list);
}
}
// 使用递归,每次加上列表中不存在的一个字符
private static void play(List<Integer> list) {
print(list);
for (int i = 0; i < chars.length; i++) {
if (!list.contains(i)) {
List<Integer> temp = new ArrayList<Integer>(list);
temp.add(i);
play(temp);
}
}
}
// 打印列表内容
private static void print(List<Integer> list) {
for (Integer i : list)
System.out.print(chars[i] + "");
System.out.println();
}
}