1. 程式人生 > >[LeetCode] 412. Fizz Buzz

[LeetCode] 412. Fizz Buzz

present leet put str write ron multipl 臃腫 represent

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