力扣精解

初级算法-数学-Fizz Buzz

2021-09-13  本文已影响0人  coenen

写一个程序,输出从 1 到 n 数字的字符串表示。

  1. 如果 n 是3的倍数,输出“Fizz”;
  2. 如果 n 是5的倍数,输出“Buzz”;
  3. 如果 n 同时是3和5的倍数,输出 “FizzBuzz”。
摘一个示例做个说明.
示例 1:
n = 15,

返回:
[
    "1",
    "2",
    "Fizz",
    "4",
    "Buzz",
    "Fizz",
    "7",
    "8",
    "Fizz",
    "Buzz",
    "11",
    "Fizz",
    "13",
    "14",
    "FizzBuzz"
]
条件分析:
  1. 3的倍数 -> Fizz
  2. 5的倍数 -> Buzz
  3. 15的倍数 -> FizzBuzz
解决思路1:
  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
}
Fizz Buzz 提交结果.jpg

测试用例:

let n = 1
let n = 3
let n = 100
let n = 1000
let n = 1000

考察要点:

上一篇下一篇

猜你喜欢

热点阅读