我可以优化 Java 代码以一次连接一个字符的两个字符串并附加其余部分吗?



这是我应该解决的条件:

给定两个字符串 a 和 b,创建一个更大的字符串,由 a 的第一个字符、b 的第一个字符、a 的第二个字符、b 的第二个字符组成,依此类推。任何剩余的字符都会放在结果的末尾。

这是我在付出巨大努力后设法孵化的工作代码:

    public String mixString(String a, String b) {
      int cut = Math.abs(a.length() - b.length());
      String end = "";
       if (cut == 0){
        for (int i = 0 ; i < a.length() ; i ++){
          end = end + a.charAt(i) + b.charAt(i);
    }
  }
  if (a.length() > b.length()){
    for (int i = 0 ; i < b.length() ; i ++){
      end = end + a.charAt(i) + b.charAt(i);
    }
    end += a.substring (a.length() - cut);
  }
  if (a.length() < b.length()){
    for (int i = 0 ; i < a.length() ; i ++){
      end = end + a.charAt(i) + b.charAt(i);
    }
    end += b.substring (b.length() - cut);
  }
  return end;

}

提前谢谢你。

抱歉,我刚刚发布的代码不一致。这是我的代码的正确版本:

    public String mixString(String a, String b) {
  int cut = Math.abs(a.length() - b.length());
  String end = "";
  if (cut == 0){
    for (int i = 0 ; i < a.length() ; i ++){
      end = end + a.charAt(i) + b.charAt(i);
    }
  }
  if (a.length() > b.length()){
    for (int i = 0 ; i < b.length() ; i ++){
      end = end + a.charAt(i) + b.charAt(i);
    }
    end += a.substring (a.length() - cut);
  }
  if (a.length() < b.length()){
    for (int i = 0 ; i < a.length() ; i ++){
      end = end + a.charAt(i) + b.charAt(i);
    }
    end += b.substring (b.length() - cut);
  }
  return end;
}
private String mix(String a, String b) {
    //init result data is empty (StringBuilder is good but JVM will do it)
    String end = "";
    //Travel each character of two input string in same time
    for (int i = 0; i < Math.max(a.length(), b.length()); i++) {
        //append each character of string "a" first. If index is out of lengh just append empty
        end += i < a.length() ? a.charAt(i) : "";
        //append each character of string "b" secound. If index is out of lengh just append empty
        end += i < b.length() ? b.charAt(i) : "";
    }
    return end;
}

我认为这对你来说已经足够了。

最新更新