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;
}

浙公网安备 33010602011771号