Leetcode412. Fizz Buzz
题目:
写一个程序,输出从 1 到 n 数字的字符串表示。
-
如果 n 是3的倍数,输出“Fizz”;
-
如果 n 是5的倍数,输出“Buzz”;
3.如果 n 同时是3和5的倍数,输出 “FizzBuzz”。
示例:
n = 15,
返回:
[
"1",
"2",
"Fizz",
"4",
"Buzz",
"Fizz",
"7",
"8",
"Fizz",
"Buzz",
"11",
"Fizz",
"13",
"14",
"FizzBuzz"
]
题解:
方案一:每个选项都判断一次
方案二:添加一个string字符串,这样即使判断多个数整除也不会出现很多的if-else
scala代码:
/**
* 每个选项都做一次判断
*
* @param n
* @return
*/
def fizzBuzz(n: Int): List[String] = {
val list = new java.util.ArrayList[String]()
for (i <- 1 to n) {
if (i % 3 == 0 && i % 5 == 0) {
list.add("FizzBuzz")
} else if (i % 3 == 0) {
list.add("Fizz")
} else if (i % 5 == 0) {
list.add("Buzz")
} else {
list.add(i.toString)
}
}
import scala.collection.JavaConverters._
list.asScala.toList
}
/**
*
* @param n
* @return
*/
def fizzBuzz2(n: Int): List[String] = {
val list = new java.util.ArrayList[String]()
for (i <- 1 to n) {
var str = ""
if (i % 3 == 0) {
str = str + "Fizz"
}
if (i % 5 == 0) {
str = str + "Buzz"
}
if (str == "") {
str = str + i.toString
}
list.add(str)
}
list.asScala.toList
}