package AlgorithmTest;
/**
* Created by dell on 2015/10/6.
*/
public class StringGroupNotRecursionTest {
public static void main(String[] args) {
String str = "abc";
StringGroupNotRecursionUtil.printStringGroup(str);
}
}
class StringGroupNotRecursionUtil{
public static void printStringGroup(String str){
BinaryNum num = new BinaryNum(str.length());
while (num.increseOne()){
char[] numChar = num.getNum();
for (int i = 0; i < numChar.length; ++i){
if (numChar[i] == '1'){
System.out.print(str.charAt(i));
}
}
System.out.print("\n");
}
}
}
class BinaryNum{
public static void main(String[] args) {
BinaryNum num = new BinaryNum(4);
while(num.increseOne()){
num.print();
}
}
private char[] num;
private boolean enable = true;
public BinaryNum(int length){
num = new char[length];
for (int i = 0; i < num.length; ++i){
num[i] = '0';
}
}
public boolean increseOne(){
if (enable){
int index = num.length - 1;
for (; index >=0 && '0' != num[index]; --index){
num[index] = '0';
}
if (index >= 0 && '0' == num[index]){
num[index] = '1';
}
if (index < 0){
enable = false;
}
}
return enable;
}
public char[] getNum(){
if (enable){
return num;
}else{
return null;
}
}
public void print(){
if (enable){
for (char c : num){
System.out.print(c);
}
System.out.print("\n");
}
}
}
求解一个字符串的所有组合,比如“abcd”,则用数0001 - 1111。来表示某位为0时表示字符串中相应的字符无,为1时表示相应的字符有。所以实现一个字符串的二进制数,令其能实现加1的运算。代码如下。主函数中是测试代码package AlgorithmTest;/** * Created by dell on 2015/10/6. */public class Stri