我們透過 LeetCode #412 Fizz Buzz 來實際感受解決問題的過程 ( 題目連結 )
是否有極限值或特殊情況:
使用哪種資料結構:Array、String
let arr be an empty array
let str be an empty string
for i (1 to n) do
if (i%15 = 0) then
str = "FizzBuzz"
else if (i%3 = 0) then
str = "Fizz"
else if (i%5 = 0) then
str = "Buzz"
else
str = "i" (i to string)
end if
add str to arr
end for
return arr
var fizzBuzz = function(n) {
let arr = []
let str = ""
for (let i=1 ; i<=n ; i++) {
if (i%15 === 0) {
str = "FizzBuzz"
} else if (i%5 === 0) {
str = "Buzz"
} else if (i%3 === 0) {
str = "Fizz"
} else {
str = i.toString()
}
arr.push(str)
}
return arr
};
// 改僅使用陣列變數
// 透過加號自動轉型
let arr = []
for (let i=1 ; i<=n ; i++) {
if (i%3 === 0 && i%5 === 0) {
arr.push("FizzBuzz")
} else if (i%5 === 0) {
arr.push("Buzz")
} else if (i%3 === 0) {
arr.push("Fizz")
} else {
arr.push(i+'')
}
}
return arr
如果多出 Divisible by 7 的條件,方法一將會變得很複雜。因此我們調整邏輯判斷的流程,並使用字串相加的方式來處理。
let arr = []
for (let i=1 ; i<=n ; i++) {
let str = ''
if (i%3 === 0) {
str += 'Fizz'
}
if (i%5 === 0) {
str += 'Buzz'
}
// 如果是空字串
if (!str) {
str = i + ''
}
arr.push(str)
}
原文連結:LeetCode:Fizz Buzz ( 用 JavaScript 學演算法 ) - Ted's Point 泰德觀點