1. 程式人生 > 其它 >每日leetcode-陣列-412. Fizz Buzz

每日leetcode-陣列-412. Fizz Buzz

分類:字串-字元與數字串間轉換

題目描述:

寫一個程式,輸出從 1 到 n 數字的字串表示。

1. 如果n是3的倍數,輸出“Fizz”;

2. 如果n是5的倍數,輸出“Buzz”;

3.如果n同時是3和5的倍數,輸出 “FizzBuzz”。

解題思路:直接遍歷判斷,取餘數

class Solution:
    def fizzBuzz(self, n: int) -> List[str]:
        L = []
        for i in range(1,n+1):
            if i % 3 == 0 and i % 5 != 0:
                L.append(
'Fizz') elif i % 5 == 0 and i % 3 != 0: L.append('Buzz') elif i % 5 == 0 and i % 3 == 0: L.append('FizzBuzz') else: L.append(str(i)) return L

時間複雜度:O(n)遍歷

空間複雜度:O(n) 用了一個數組來存結果

程式碼優化:要先判斷是否同時是3和5的倍數,不然會在判斷3的時候就直接判斷為3的結果

class Solution:
    def fizzBuzz(self, n: int) -> List[str]:
        L = []
        for i in range(1,n+1):
            if i % 15 == 0 :
                L.append('FizzBuzz') 
            elif i % 3 == 0 :
                L.append('Fizz') 
            elif i % 5 == 0 :
                L.append('Buzz
') else: L.append(str(i)) return L