2的n次方的非递归算法

Question:输出字符串s的所有子串

public String[] SubString(String s){
    String[] re = new String[1<<s.length];
for (int i = 0; i < (1 << s.length); i++) { //1<<n :表示2的n次方 (即从0-2^n-1)
String t = "";
for (int j = 0; j < s.length; j++) {    //i依次右移(1-n)位
if (((i >> j) & 1) != 0) //其实是按照i的数值(转化为2进制)对应的每位,看是否要加上对用的字符
t += s.charAt(j);
}
re[i] = t;
}
return re;
}

posted @ 2021-05-07 22:20  XLS小  阅读(73)  评论(0)    收藏  举报