string questions

String Array Permutation

解法参考自stack overflow的一个solution
递归方法:

1
2
3
4
5
6
7
8
9
10
11
12
private static void ( Vector<Vector<String>> bigVector, String accumulator){
if(bigVector.isEmpty()){
System.out.println(accumulator);
}
else{
for(String word : bigVector.get(0)){
Vector<Vector<String>> r =
new Vector<Vector<String>>(bigVector.subList(1, bigVector.size()));
printWords(r, accumulator + " " + word);
}
}
}

调用时使用

1
printWords(l,"");

非递归方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
private static void printCombinations(Vector<Vector<String>> outer){
int c = outer.size();
int row = 1;
for(Vector<String> v : outer){
row *= v.size();
}
int[] column = new int[c];
int count = 0;
for(int j = 0; j < row; j++){
for(int i = 0; i < column.length; i++){
System.out.println(outer.get(i).get(column[i]) + " ");
}
System.out.println();
column[count]++;
while(column[count] == outer.get(count).size()){
column[count] = 0;
count++;
if(count == c) return;
column[count]++;
}
count = 0;
}
}