每日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

 

posted @ 2021-07-01 21:42  LLLLgR  阅读(36)  评论(0编辑  收藏  举报