我在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的建议正确格式化我的代码。
答案 0 :(得分:6)
我也不愿意。我不认为第二个更有效,尽管它更复杂。两者都不必要地创建对象。
public String seeColor(String str) {
return str.startsWith("red") ? "red" :
str.startsWith("blue")? "blue" : "";
}
每次调用substring
时,都会创建两个对象,这些对象的功能非常昂贵。