LeetCode每日一题之412_Fizz_Buzz
写一个程序,输出从 1 到 n 数字的字符串表示。
-
如果 n 是3的倍数,输出“Fizz”;
-
如果 n 是5的倍数,输出“Buzz”;
3.如果 n 同时是3和5的倍数,输出 “FizzBuzz”。
示例:
n = 15,
返回:
[
"1",
"2",
"Fizz",
"4",
"Buzz",
"Fizz",
"7",
"8",
"Fizz",
"Buzz",
"11",
"Fizz",
"13",
"14",
"FizzBuzz"
]
题解:
直接模拟法求解
代码1:
class Solution {
public List<String> fizzBuzz(int n) {
List<String> list = new ArrayList<>();
int num = 1;
while(num <= n) {
//通过flag标志位表示是哪一种情况
int flag = 0;
if(num % 3 == 0) flag = 1;
if(num % 5 == 0) flag = 2;
if(num % 3 == 0 && num % 5 == 0) flag = 3;
if(flag == 0) list.add(num + "");
if(flag == 1) list.add("Fizz");
if(flag == 2) list.add("Buzz");
if(flag == 3) list.add("FizzBuzz");
num++;
}
return list;
}
}
代码2:
class Solution {
public List<String> fizzBuzz(int n) {
List<String> list = new ArrayList<>();
int num = 1;
while(num <= n) {
//利用StringBuilder类进行辅助模拟
StringBuilder sb = new StringBuilder();
if(num % 3 == 0) sb.append("Fizz");
if(num % 5 == 0) sb.append("Buzz");
if(sb.length() == 0) {
list.add(num + "");
}else {
list.add(sb.toString());
}
num++;
}
return list;
}
}