写一个程序,输出从 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"
]
很简单的一道数学题,技巧就在先判断是否同时是3和5的倍数
对于每个数,判断它能不能同时被 3 和 5 整除,如果可以就把答案加入答案数组res里面。
如果不行,判断它能不能被 3 整除,如果可以,把 Fizz 加入加入答案数组res里面。
如果还是不行,判断它能不能被 5 整除,如果可以,把 Buzz 加入加入答案数组res里面。
如果以上都不行,把这个数加入答案列表。
复杂度分析
- 时间复杂度: O(N)
- 空间复杂度: O(1)
func fizzBuzz(n int) []string {
if n <= 0 {
return []string{}
}
res := make([]string,n)
for i:=0;i<n;i++ {
res[i] = help(i+1)
}
return res
}
func help(a int) string {
if a % 3 == 0 && a % 5 == 0 {
return "FizzBuzz"
} else if a % 3 == 0{
return "Fizz"
} else if a % 5 == 0{
return "Buzz"
}
return strconv.Itoa(a)
}