给你一个整数 n ,找出从 1 到 n 各个整数的 Fizz Buzz 表示,并用字符串数组 answer(下标从 1 开始)返回结果,其中:
- answer[i] == "FizzBuzz" 如果 i 同时是 3 和 5 的倍数。
- answer[i] == "Fizz" 如果 i 是 3 的倍数。
- answer[i] == "Buzz" 如果 i 是 5 的倍数。
- answer[i] == i 如果上述条件全不满足。
示例 1:
输入:n = 3
输出:["1","2","Fizz"]
方法一:数学
其实就是利用定义判断当前数字是否为 3 / 5 的倍数:
- 若为 3 的倍数,则每一位上的数字合应该能被 3 整除
- 若为 5 的倍数,则数的末尾数应该为 0 或 5
public ListfizzBuzz(int n) { List result = new ArrayList<>(n); boolean fizz = false, buzz = false; for (int i = 1; i <= n; ++ i) { char[] key = String.valueOf(i).toCharArray(); fizz = getFizz(key); buzz = (key[key.length-1] == '0' || key[key.length-1] == '5'); if (fizz || buzz) { if (fizz && buzz) result.add("FizzBuzz"); else result.add(fizz ? "Fizz" : "Buzz"); } else { result.add(String.valueOf(i)); } } return result; } private static boolean getFizz(char[] key) { int sum = 0; for (char c : key) sum += c-'0'; return sum % 3 == 0; }


![LeetCode-每日一题 412. Fizz Buzz [Java实现] LeetCode-每日一题 412. Fizz Buzz [Java实现]](http://www.mshxw.com/aiimages/31/325293.png)
