lintcode 9 Fizz Buzz

题目描述

Description
Given number n. Print number from 1 to n. But:

  • when number is divided by 3, print “fizz”.

  • when number is divided by 5, print “buzz”.

  • when number is divided by both 3 and 5, print “fizz buzz”.
    Example
    If n = 15, you should return:

    [
      “1”, “2”, “fizz”,
      “4”, “buzz”, “fizz”,
      “7”, “8”, “fizz”,
      “buzz”, “11”, “fizz”,
     “13”, “14”, “fizz buzz”
    ]

Challenge
Can you do it with only one if statement?
被3整除就fizz,被5整除就buzz,被3和5整除就fizz buzz
题目很简单,挑战很有意思,所以就记录一下。挑战让我们只用一个if来写

思路

这道题呢,当然如果用三元运算符一直嵌套也是可以的,不过明显不是这道题的意思
刚开始不知道怎么使用一个if来完美的解决这道题,后来看到一个老哥的解法,觉得还是比较有意思的
是这样的,写一个函数helper用来判断整除,然后用字符串拼接来输出字符串:

  • 如果被3整除,字符串加上“fizz”
  • 如果被15整除,加上“ ”
  • 如果被5整除,加上“buzz”
String w = helper(i, 3, "fizz") + helper(i, 15, " ")
 + helper(i, 5, "buzz");

代码

public List<String> fizzBuzz(int n) {
        List<String> strings = new LinkedList<>();
        for (int i = 1; i <= n; i++) {
            String w = helper(i, 3, "fizz") + helper(i, 15, " ") + helper(i, 5, "buzz");
            if (w.equals("")) {
                w += i;
            }
            strings.add(w);
        }
        return strings;
    }

    public String helper(int n, int div, String w) {
        return n % div == 0 ? w : "";
    }

猜你喜欢

转载自blog.csdn.net/qq_35464543/article/details/82932418