我有一个名单列表ArrayList<String> names
。例如:
ArrayList<String> names= new ArrayList<String>();
names.add("foo1");
names.add("foo2");
names.add("foo3");
names.add("foo4");
names.add("foo5");
然后我可以将这五个名称编码成二进制数,其中(ceiling(log(5))=)3位数:foo1=000, foo2=001, foo3=010, foo4=011, foo5=100
。我想要一个看似public int[] return_binary_encoding(String name, ArrayList<String> names)
的函数,其中name
位于names
。
答案 0 :(得分:0)
感谢所有帮助我发表意见的人。
public int[] return_binary_encoding(String name, ArrayList<String> names) {
int code[];
int domain_size= names.size();
int siz_of_code= (int)Math.ceil(Math.log(domain_size)/Math.log(2));
code= new int[siz_of_code]; //it is initialized to 0 by default
int index= names.indexOf(name);
String binary_code= Integer.toBinaryString(index);
//insert binary_code in code from right
int counter= code.length - 1;
for(int i= binary_code.length()-1; i>= 0; i--) {
int digit= Character.getNumericValue(binary_code.charAt(i));
code[counter]= digit;
counter --;
}
return code;
}