写一个程序,输出从 1 到 n 数字的字符串表示。
- 如果 n 是3的倍数,输出“Fizz”;
- 如果 n 是5的倍数,输出“Buzz”;
- 如果 n 同时是3和5的倍数,输出 “FizzBuzz”。
摘一个示例做个说明.
示例 1:
n = 15,
返回:
[
"1",
"2",
"Fizz",
"4",
"Buzz",
"Fizz",
"7",
"8",
"Fizz",
"Buzz",
"11",
"Fizz",
"13",
"14",
"FizzBuzz"
]
条件分析:
- 3的倍数 -> Fizz
- 5的倍数 -> Buzz
- 15的倍数 -> FizzBuzz
解决思路1:
- 根据分析1、2、3,判断是否是倍数.进行求余.
先判断是否是15的倍数,是则内容为FizzBuzz.然后下一个.如果不是则判断是否是3的倍数.是则内容为Fizz.然后下一个.如果不是泽判断是否为5的倍数.如果是则内容为Buzz.否则内容为index.
func fizzBuzz(_ n: Int) -> [String] {
var array:[String] = [String](repeating: "", count: n + 1)
if n == 1 {
return ["1"]
}
for i in 1 ..< n + 1 {
let mod15 = i % 15
let mod3 = i % 3
let mod5 = i % 5
if mod15 == 0 {
array[i] = "FizzBuzz"
}else if mod3 == 0{
array[i] = "Fizz"
}else if mod5 == 0{
array[i] = "Buzz"
}else{
array[i] = "\(i)"
}
}
array.remove(at: 0)
return array
}
测试用例:
let n = 1
let n = 3
let n = 100
let n = 1000
let n = 1000
考察要点:
- 数学
- 字符串
- 模拟