【问题标题】:Encode a 4 Length string using different 4 bit binary numbers使用不同的 4 位二进制数对 4 长度的字符串进行编码
【发布时间】:2018-09-15 08:13:58
【问题描述】:

我正在尝试制作一个函数,可以根据其中的位置将二进制数转换为字母。

例如,如果我有二进制数:0101

我想获取字符串“LUDR”并将它们有效地相乘以获得 : "UR"。

我在一个数组中有 4 位二进制数,而我想与它们“相乘”的字符串总是“LUDR”。

我会举更多的例子.. 二进制数:1011 给出“LDR” 二进制数:0001 给出“R”

编辑:

我已经写的代码:

String[][] binVals = new String[10][10];
//my function to fill up with 4 bit binary values so i can get 100 in total
//just read from file so that's why it's a string array
String mazeWallRemove = "LURD";
//I need to write some function to turn the binary values in to some string
String[][] unCodedWalls = new String[10][10]//into this array

我的问题是我可以使用哪些函数来“乘”binVals 和“LURD”字符串以获得字符串输出(如上所示的形式)

如果语句将数组中的每个二进制值转换为整数然后只是说:

for(int a = 0; a < 10; a++){
   for(int b = 0; b < 10; b++){
      if(binVals[a][b] == 1){
         uncodedWalls[a][b] = "R"
      } // lots more else if statements
   }
}

这种方法效率极低,因此我正在寻找一种更有效的方法来代替使用大量的 if 语句。

【问题讨论】:

  • 到目前为止你做了什么代码。
  • 你能否更详细地解释一下这个问题。
  • 我们了解您正在尝试进行的练习,但是您对我们有什么问题?我们不是代码编写服务,但我们会帮助您解决特定的编码问题。

标签: java


【解决方案1】:

您可以使用 String 类中可用的 charAt 方法来构造您需要的字符串。将要相乘的二进制数和字符串传递给此方法。这将检查二进制字符串中的字符是否为 1,并从原始字符串中获取相应的值并附加它。

public String multiply(String value, String binary) {
    String finalString = "";
    for (int i = 0; i < binary.length(); i++) {
        if (binary.charAt(i) == '1') {
            finalString+=value.charAt(i);
        }
    }       
    return finalString;

}

【讨论】:

  • 虽然你很想帮忙,但请注意,你只是替别人做了功课。与其发布完整的代码解决方案,不如考虑引导他们自己解决问题?
  • 忽略关于作业的参数,这个答案可以正常工作,但请注意,在循环中附加到字符串时,使用StringBuilder 将获得更好的效率,特别是如果你传递构造函数一个合理的初始容量,足以容纳组装字符串序列的最终长度。
  • 这不是我在处理过程中编写可视化和可交互迷宫生成器和求解器的任何作业,其中迷宫求解器是一种遗传算法。这是不久前的事,现在并不重要,只是想澄清一下。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-11
  • 2021-10-27
  • 1970-01-01
  • 2017-12-06
  • 1970-01-01
  • 1970-01-01
  • 2013-11-21
相关资源
最近更新 更多