如何将N个字符串编码为具有最小位数的二进制数

时间:2016-03-18 03:36:32

标签: java

我有一个名单列表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

1 个答案:

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