1.题目

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

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

示例:

  1. n = 15,
  2. 返回:
  3. [
  4. "1",
  5. "2",
  6. "Fizz",
  7. "4",
  8. "Buzz",
  9. "Fizz",
  10. "7",
  11. "8",
  12. "Fizz",
  13. "Buzz",
  14. "11",
  15. "Fizz",
  16. "13",
  17. "14",
  18. "FizzBuzz"
  19. ]

2.思路

暴力法:直接遍历从1到n的每个数字,分别判断是否能被3、5整除、被3整除、被5整除

  1. public List<String> fizzBuzz(int n) {
  2. List<String> ans = new ArrayList<String>();
  3. for (int num = 1; num <= n; num++) {
  4. boolean divisibleBy3 = (num % 3 == 0);
  5. boolean divisibleBy5 = (num % 5 == 0);
  6. if (divisibleBy3 && divisibleBy5) {
  7. ans.add("FizzBuzz");
  8. } else if (divisibleBy3) {
  9. ans.add("Fizz");
  10. } else if (divisibleBy5) {
  11. ans.add("Buzz");
  12. } else {
  13. ans.add(Integer.toString(num));
  14. }
  15. }
  16. return ans;
  17. }