LeetCode 412. Fizz Buzz

简介: LeetCode 412. Fizz Buzz

LeetCode 412. Fizz Buzz


Table of Contents

一、中文版

二、英文版

三、My answer

四、解题报告


一、中文版

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

1. 如果 n 是3的倍数,输出“Fizz”;

2. 如果 n 是5的倍数,输出“Buzz”;

3.如果 n 同时是3和5的倍数,输出 “FizzBuzz”。

示例:

n = 15,

返回:

[
    "1",
    "2",
    "Fizz",
    "4",
    "Buzz",
    "Fizz",
    "7",
    "8",
    "Fizz",
    "Buzz",
    "11",
    "Fizz",
    "13",
    "14",
    "FizzBuzz"
]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/fizz-buzz
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


二、英文版

Write a program that outputs the string representation of numbers from 1 to n.

But for multiples of three it should output “Fizz” instead of the number and for the multiples of five output “Buzz”. For numbers which are multiples of both three and five output “FizzBuzz”.

Example:

n = 15,

Return:

[
    "1",
    "2",
    "Fizz",
    "4",
    "Buzz",
    "Fizz",
    "7",
    "8",
    "Fizz",
    "Buzz",
    "11",
    "Fizz",
    "13",
    "14",
    "FizzBuzz"
]


三、My answer

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


四、解题报告

数据结构:数组

实现:if 规则

算法:模拟题目即可

注意:因为本题较为简单,所以可以直接 if 模拟规则,如果题目更为复杂,不可能每种情况都写出 if,即使写出也会很冗杂。可以参见 LeetCode 官方答案第二种方法,摘抄如下:

方法二: 字符串连接
思路
这个方法不会降低渐进复杂度,但是当 FizzBuzz 的规则变得更复杂的时候,这将会是个更优雅的解法。比方说,玩个 FizzBuzzJazz 的游戏。规则如下:
<pre>
3 ---> "Fizz" , 5 ---> "Buzz", 7 ---> "Jazz"
</pre>
如果你还是用之前的方法来解决这个问题的话,那将会有非常多的条件需要判断哦~
能不能被 3 整除
能不能被 5 整除
能不能被 7 整除
能不能同时被 3 和 5 整除
能不能同时被 5 和 7 整除
能不能同时被 3 和 7 整除
能不能同时被 3,5,7 整除
不能被 3,5,7 其中任何一个数整除
如果 FizzBuzz 照着这种方式变地更复杂的话,那么你要写的判断可能会让你抓狂。
算法
我们放弃使用之前的联合判断,取而代之依次判断是否能被给定的数整数。这道题中,就是依次判断能不能被 3 整除,能不能被 5 整除。如果能被 3 整除,就把对应的 Fizz 连接到答案字符串,如果能被 5 整除,就把 Buzz 连接到答案字符串。
举个例子,现在需要判断 15,步骤将会是下面这样的:
条件 1: 15 % 3 == 0, num_ans_str = "Fizz"
条件 2: 15 % 5 == 0, num_ans_str += "Buzz"
=> num_ans_str = "FizzBuzz"
对于 FizzBuzz 来说,只需要判断两个条件就可以了,而不需要像方法一中那样判断三个条件。
同样的,对于 FizzBuzzJazz,现在只需要判断三个条件就可以了。
class Solution:
    def fizzBuzz(self, n):
        """
        :type n: int
        :rtype: List[str]
        """
        # ans list
        ans = []
        for num in range(1,n+1):
            divisible_by_3 = (num % 3 == 0)
            divisible_by_5 = (num % 5 == 0)
            num_ans_str = ""
            if divisible_by_3:
                # Divides by 3
                num_ans_str += "Fizz"
            if divisible_by_5:
                # Divides by 5
                num_ans_str += "Buzz"
            if not num_ans_str:
                # Not divisible by 3 or 5
                num_ans_str = str(num)
            # Append the current answer str to the ans list
            ans.append(num_ans_str)  
        return ans
作者:LeetCode
链接:https://leetcode-cn.com/problems/fizz-buzz/solution/fizz-buzz-by-leetcode/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
相关文章
【Leetcode -412.Fizz Buzz -414.第三大的数】
【Leetcode -412.Fizz Buzz -414.第三大的数】
48 0
LeetCode 412. Fizz Buzz
写一个程序,输出从 1 到 n 数字的字符串表示。
161 0
Leetcode-Easy 412. Fizz Buzz
Leetcode-Easy 412. Fizz Buzz
83 0
Leetcode-Easy 412. Fizz Buzz
|
算法 Java C#
【算法千题案例】每日LeetCode打卡——74.Fizz Buzz
📢前言 🌲原题样例:Fizz Buzz 🌻C#方法:模拟 + 字符串拼接 🌻Java 方法:模拟 + 字符串拼接 💬总结
【算法千题案例】每日LeetCode打卡——74.Fizz Buzz
|
算法 Python
<LeetCode天梯>Day043 Fizz Buzz(按部就班) | 初级算法 | Python
<LeetCode天梯>Day043 Fizz Buzz(按部就班) | 初级算法 | Python
<LeetCode天梯>Day043 Fizz Buzz(按部就班) | 初级算法 | Python
LeetCode之Fizz Buzz
LeetCode之Fizz Buzz
117 0
|
算法 文件存储
[leetcode/lintcode 题解] 算法面试真题详解:Fizz Buzz 问题
[leetcode/lintcode 题解] 算法面试真题详解:Fizz Buzz 问题
[leetcode/lintcode 题解] 算法面试真题详解:Fizz Buzz 问题
|
2月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
3月前
|
Python
【Leetcode刷题Python】剑指 Offer 32 - III. 从上到下打印二叉树 III
本文介绍了两种Python实现方法,用于按照之字形顺序打印二叉树的层次遍历结果,实现了在奇数层正序、偶数层反序打印节点的功能。
57 6
|
3月前
|
搜索推荐 索引 Python
【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
114 2