【发布时间】:2016-03-19 00:44:00
【问题描述】:
我有一个名字列表,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 中。
【问题讨论】:
-
所以你想要一个与字符串绑定的数字......对于你的系统,所有数据都是二进制的,所以你的 000、001、010、011、100 实际上是 0、1、2、3, 4...那不就是你的字符串在ArrayList中的索引值吗?
-
什么是
String name?在您提出的问题中,它的意义是什么?你有没有尝试过任何东西——几行代码? -
name在names中。好的,现在我觉得这是一个愚蠢的问题,因为我可以通过names.indexOf(name)获得name的索引,然后我只需要将其转换为带有log(k) 位的二进制数。对吗? -
@Prashnant @OliPro007 根据您所说的,我认为以下内容几乎可以完成工作:
Integer.toBinaryString(names.indexOf(name))然后我只需要添加足够的 0 即可获得带有 log(k) 的二进制数位数。对吗? -
@Reza 好像是这样,this post 可以帮助你做到这一点。
标签: java