publicclass Q281 {
/**
* 题目:字符串的组合
* 题目说明:输入字符串,打印该字符串的所有组合形式。例如,输入abc,它的组合有a,b,c,ab,ac,bc,abc
* 解题思路:本例是利用非递归的形式,将组合打印出来的。利用位数的二进制形式来判断是否存在组合的形式
*/
publicstatic void main(String[] args) {
Q281 test = new Q281();
test.combination("ab");
}
//非递归实现
publicvoid print_str(String str,int s){
if(str ==null){
return ;
}
char[] chs = str.toCharArray();
int length = chs.length;
for(int i=0; i<length; ++i){
if((s & (1 << i )) != 0){//判断s的二进制中哪些位为1,即代表取某一位
System.out.print(chs[i]);//例如:001 010,011,100,101,110,111
}
}
System.out.println();
}
publicvoid combination(String str){
for(int i = 1; i < (1 << str.length()); i++){
print_str(str, i);
}
}
}
Q281:字符串的组合形式
最新推荐文章于 2019-04-11 16:38:35 发布