java - 在较少重复的代码或高效但重复的代码之间进行选择

标签 java string performance duplicates

我正在尝试 CodingBat 中的练习。

Java > String-1 > seeColor: 给定一个字符串,如果该字符串以“red”或“blue”开头,则返回该颜色字符串,否则返回空字符串。

我的运行代码是:

public String seeColor(String str) {
  int len = str.length();

  if (len >= 3 && str.substring(0, 3).equals("red")) {
   return str.substring(0, 3);
  } else if (len >= 4 && str.substring(0, 4).equals("blue")) {
     return str.substring(0, 4);
    }
  return "";

}

但我在网上找到了另一个答案:

public String seeColor(String str) {
    int len = str.length();

    if(len >= 4) {
         if(str.substring(0, 4).equals("blue"))
            return "blue";
         else if(str.substring(0, 3).equals("red"))
            return "red";
        else
            return "";
    }   

    else if(len == 3) {
        if(str.substring(0, 3).equals("red"))
            return "red";
        else
            return "";
    }

    else
        return "";
}

我的解决方案的重复代码较少(或者这是我的想法)。 但另一种解决方案看起来更有效。它从大字符串开始,仅评估末尾长度为 3 个字符的字符串。也许最后一个解决方案更能够在未来进行简单的更改。 我想读一下某人的意见。谢谢。

已编辑:我添加一个歉意,我一开始没有按照@MikeDunlavey的建议正确格式化我的代码。

最佳答案

我也不会这么做。我不认为第二个更有效,尽管它更复杂。两者都不必要地创建对象。

public String seeColor(String str) {
    return str.startsWith("red") ? "red" :
           str.startsWith("blue")? "blue" : "";
}

每次调用 substring 时,都会创建两个对象,这对于该函数正在执行的操作来说非常昂贵。

关于java - 在较少重复的代码或高效但重复的代码之间进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34953872/

相关文章:

java - Android MotionLayout : How to handle both click and swipe events on same view?(包括视频示例)

string - Lua gmatch 奇数字符(斯洛伐克字母)

python - 为什么Python中的字符串在列表内部和外部显示不同?

java - 如何在 Struts 1 中上传多个文件

java - 我的代码给了我一些奇怪的消息,但我不知道如何解释它

JavaFX - 更改表格 View 单元格中的文本

java - 如何准确地将Float解析为String?

java - 使用 hashmap 改进词频计数

php - CSV 与 MySQL 性能对比

wpf - 将边距定义为静态资源是否会产生显着的性能开销?