问题,
我的解决方案
if(x mod 3 ==0 ) return "a"
else if (x mod 3 == 0) return "b"
else if (x mod 3 == 0 && x mod 5) return "ab"
还有其他有效的解决方案吗?
答案 0 :(得分:2)
保存少量计算:
boolean mod3 = x mod 3 == 0
boolean mod5 = x mod 5 == 0
if (mod3 && mod5) return "ab"
if (mod3) return "a"
if (mod5) return "b"
答案 1 :(得分:1)
Iff((x mod 3 == 0)和(x mod 5 == 0))< => (x mod 15 == 0)
if (x mod 15 == 0) return "ab"
else if(x mod 3 == 0 ) return "a"
else if (x mod 5 == 0) return "b"
答案 2 :(得分:1)
稍微高效......而且肯定更正确......解决方案是:
if (x mod 3 == 0) {
if (x mod 5 == 0) {
return "ab"
} else {
return "a"
}
} else if (x mod 5 == 0) {
return "b";
} else {
// probably ...
return "";
}
请注意,性能上的差异很可能是微不足道的,如果JIT编译器足够智能,它很可能是零。这适用于所有解决方案。
答案 3 :(得分:0)
应该是
if (x mod 3 == 0 && x mod 5 == 0) return "ab"
else if(x mod 3 ==0 ) return "a"
else if (x mod 5 == 0) return "b"
否则“ab”将不会返回,即使该数字可被3和5
整除答案 4 :(得分:0)
可替换地:
String result = "";
if (x mod 3 == 0) result += "a";
if (x mod 5 == 0) result += "b";
return result;
但它有字符串连接的开销
答案 5 :(得分:0)
string result = ""
if(x mod 3 == 0 )
{
result += "a"
}
if(x mod 5 == 0 )
{
result += "b"
}
return result;
此方法仅将模数3和5检查一次。
答案 6 :(得分:0)
这是您应该经常考虑的经典FizzBuzz问题 第一种情况是公共分隔符,然后按降序进行 像这样:
if (x mod 3 == 0 && x mod 5) return "ab"
else if(x mod 5 ==0 ) return "b"
else if (x mod 3 == 0) return "a"
答案 7 :(得分:-1)
String result="";
result=(x%3 == 0 && x%5 == 0 ? "ab" : x%5 == 0 ? "a" : x%3 == 0 ? "b" : "not divisible to any number" );
System.out.println(result);