题目描述
写一个程序,输出从 1
到 n
数字的字符串表示。
如果是 3 的倍数,输出 Fizz
而不是数字本身;如果是 5 的倍数,输出 Buzz
;如果同时是 3 和 5 的倍数,输出 FizzBuzz
。
样例
n = 15
返回:
[
"1",
"2",
"Fizz",
"4",
"Buzz",
"Fizz",
"7",
"8",
"Fizz",
"Buzz",
"11",
"Fizz",
"13",
"14",
"FizzBuzz"
]
算法
(模拟) $O(n)$
- 直接按照题目描述模拟。
时间复杂度
- 遍历 1 到 $n$,时间复杂度为 $O(n)$。
空间复杂度
- 需要 $O(n)$ 的额外空间存储答案。
Go 代码
func fizzBuzz(n int) []string {
ans := make([]string, 0, n)
for i := 1; i <= n; i++ {
if i % 15 == 0 {
ans = append(ans, "FizzBuzz")
} else if i % 3 == 0 {
ans = append(ans, "Fizz")
} else if i % 5 == 0 {
ans = append(ans, "Buzz")
} else {
ans = append(ans, fmt.Sprintf("%d", i))
}
}
return ans;
}