在一次面试中碰到一题目,给定一个数组或字符串,写出所有可能的组合
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
public class MandomMake {
public static int count =0;
/**
list 要排列的集合
str 排列后的数据
*/
public static void make(List list,String Combination){
System.out.println("第"+count+"个组合:"+Combination);
count++;
for (int i = 0; i < list.size(); i++) {
List items=new LinkedList(list);
make(items, Combination+items.remove(i));
}
}
public static void main(String[] args) {
String [] aStrings={"a","b","c"};
String ab="abcd";
//集合排列
//make(Arrays.asList(aStrings), "");
//字符串排列
make(Arrays.asList(ab.split("")), "");
}
}
测试后的结果:
集合排列:(此处集合没有添加[]和, 只做测试)
第0个组合:
第1个组合:a
第2个组合:ab
第3个组合:abc
第4个组合:ac
第5个组合:acb
第6个组合:b
第7个组合:ba
第8个组合:bac
第9个组合:bc
第10个组合:bca
第11个组合:c
第12个组合:ca
第13个组合:cab
第14个组合:cb
第15个组合:cba
字符串:
第0个组合:
第1个组合:a
第2个组合:ab
第3个组合:abc
第4个组合:abcd
第5个组合:abd
第6个组合:abdc
第7个组合:ac
第8个组合:acb
第9个组合:acbd
第10个组合:acd
第11个组合:acdb
第12个组合:ad
第13个组合:adb
第14个组合:adbc
第15个组合:adc
第16个组合:adcb
第17个组合:b
第18个组合:ba
第19个组合:bac
第20个组合:bacd
第21个组合:bad
第22个组合:badc
第23个组合:bc
第24个组合:bca
第25个组合:bcad
第26个组合:bcd
第27个组合:bcda
第28个组合:bd
第29个组合:bda
第30个组合:bdac
第31个组合:bdc
第32个组合:bdca
第33个组合:c
第34个组合:ca
第35个组合:cab
第36个组合:cabd
第37个组合:cad
第38个组合:cadb
第39个组合:cb
第40个组合:cba
第41个组合:cbad
第42个组合:cbd
第43个组合:cbda
第44个组合:cd
第45个组合:cda
第46个组合:cdab
第47个组合:cdb
第48个组合:cdba
第49个组合:d
第50个组合:da
第51个组合:dab
第52个组合:dabc
第53个组合:dac
第54个组合:dacb
第55个组合:db
第56个组合:dba
第57个组合:dbac
第58个组合:dbc
第59个组合:dbca
第60个组合:dc
第61个组合:dca
第62个组合:dcab
第63个组合:dcb
第64个组合:dcba
“`