sno*_*yak 9 java binary boolean
例如,如果我想要所有长度为3的二进制字符串,我可以简单地将它们声明为:
boolean[] str1 = {0,0,0};
boolean[] str2 = {0,0,1};
boolean[] str3 = {0,1,0};
boolean[] str4 = {0,1,1};
boolean[] str5 = {1,0,0};
boolean[] str6 = {1,0,1};
boolean[] str7 = {1,1,0};
boolean[] str8 = {1,1,1};
Run Code Online (Sandbox Code Playgroud)
将所有可能的长度为N的二进制字符串生成到布尔数组中的最有效方法是什么?
我不一定需要的最有效的方法,只有一个那是相当有效的,并容易让我多线程.
编辑:我应该注意,如果重要的话,我将把它们全部存储在ArrayList中.
这里有一些生成真值表的代码...(由于数组大小限制,只适用于32位(如果需要,可以将大小变量更改为任何值并将布尔值存储为1/0):
int size = 3;
int numRows = (int)Math.pow(2, size);
boolean[][] bools = new boolean[numRows][size];
for(int i = 0;i<bools.length;i++)
{
for(int j = 0; j < bools[i].length; j++)
{
int val = bools.length * j + i;
int ret = (1 & (val >>> j));
bools[i][j] = ret != 0;
System.out.print(bools[i][j] + "\t");
}
System.out.println();
}
Run Code Online (Sandbox Code Playgroud)