一问题
n个长度的字符串中取m个长度的组合
二、算法
public class Main25 {
/**
* @param args
*/
public static void main(String[] args) {
Main25 m = new Main25();
String str = "abc";
m.combiantion(str, 2);
}
public static void combiantion(String str, int m){
char chs[] = str.toCharArray();
if(chs.length == 0) return ;
Stack<Character> stack = new Stack<Character>();
for(int i = 1; i <= chs.length; i++){
combine(chs, 0, m, stack);
}
}
//从字符数组中第begin个字符开始挑选number个字符加入list中
public static void combine(char []chs, int begin, int number, Stack<Character> stack){
if(number == 0){
System.out.print(stack.toString().trim().replaceAll(",",""));
return ;
}
if(begin == chs.length){
return;
}
stack.push(chs[begin]);
combine(chs, begin + 1, number - 1, stack);
stack.pop();
combine(chs, begin + 1, number, stack);
}
}
结果:
[a b][a c][b c][a b][a c][b c][a b][a c][b c]