[LeetCode] 412. Fizz Buzz

Posted arcsinw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LeetCode] 412. 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"
]

输出1到n的数字,
把3的倍数变成Fizz
5的倍数变成Buzz
15的倍数变成FizzBuzz

我第一次写出了这样的版本,难以直视,同时被3和5整除就是能被15整除的意思我居然没想到,STUPID

vector<string> fizzBuzz(int n)
{
    vector<string> result;
    for (int i = 1; i <= n; i++)
    {
        bool isThreeMultiple = i % 3 == 0;
        bool isFiveMultiple = i % 5 == 0;

        if (!isThreeMultiple && !isFiveMultiple)
        {
            result.push_back(to_string(i));
            continue;
        }
        else
        {
            string tmp;
            if (isThreeMultiple)
            {
                tmp += "Fizz";
            }
            if (isFiveMultiple)
            {
                tmp += "Buzz";
            }
            result.push_back(tmp);
        }
    }

    return result;
}

更加正常的版本

vector<string> fizzBuzz(int n)
{
    vector<string> result;
    for (int i = 1; i <= n; i++)
    {
        if (i % 15 == 0)
        {
            result.push_back("FizzBuzz");
        }
        else if (i % 5 == 0)
        {
            result.push_back("Buzz");
        }
        else if (i % 3 == 0)
        {
            result.push_back("Fizz");
        }
        else
        {
            result.push_back(to_string(i));
        }
    }

    return result;
}

神奇的是后面这个版本在LeetCode里的排名还要靠后一些,前面那个臃肿的版本居然能拿到100%




以上是关于[LeetCode] 412. Fizz Buzz的主要内容,如果未能解决你的问题,请参考以下文章

[LeetCode] 412. Fizz Buzz

LeetCode 412 Fizz Buzz

LeetCode 412. Fizz Buzz

LeetCode|412. Fizz Buzz

LeetCode 412. Fizz Buzz

LeetCode 412. Fizz Buzz