该题摘自[程序员面试宝典]一书,属于转载内容~
问题描述:把一个数组里的数组合全部列出,比如1和2列出来是1,2,12,21
代码:
package learnExecise;
import java.util.*;
public class aa {
public static void main(String[] args){
String a[] =new String[]{"1","2","3","4"};
listAll(Arrays.asList(a),"");
}
public static void listAll(List list,String prefix){
System.out.println(prefix);
for(int i=0;i<list.size();i++){
List temp=new LinkedList(list);
listAll(temp,prefix+temp.remove(i));
}
}
}
输出
1
12
123
1234
124
1243
13
132
1324
134
1342
14
142
1423
143
1432
2
21
213
2134
214
2143
23
231
2314
234
2341
24
241
2413
243
2431
3
31
312
3124
314
3142
32
321
3214
324
3241
34
341
3412
342
3421
4
41
412
4123
413
4132
42
421
4213
423
4231
43
431
4312
432
4321