版权声明:此文章为许诗宇所写,如需转载,请写下转载文章的地址 https://blog.csdn.net/xushiyu1996818/article/details/83054381
题目及测试
package pid412;
/* Fizz Buzz
写一个程序,输出从 1 到 n 数字的字符串表示。
1. 如果 n 是3的倍数,输出“Fizz”;
2. 如果 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"
]
*/
import java.util.List;
public class main {
public static void main(String[] args) {
int [] testTable = {15,8,21};
for (int ito : testTable) {
test(ito);
}
}
private static void test(int ito) {
Solution solution = new Solution();
List<String> rtn;
long begin = System.currentTimeMillis();
System.out.print(ito);
System.out.println();
//开始时打印数组
rtn= solution.fizzBuzz(ito);//执行程序
long end = System.currentTimeMillis();
System.out.println("rtn=" );
System.out.print(rtn);
for(String str:rtn){
System.out.print(str+" ");
}
System.out.println();
System.out.println("耗时:" + (end - begin) + "ms");
System.out.println("-------------------");
}
}
解法1(成功,6ms,较慢)
不用对数进行mod,直接设置mod参数,mod3,mod5,每次+1,到3,5,为0
package pid412;
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map.Entry;
public class Solution {
public List<String> fizzBuzz(int n) {
int mod3=1;
int mod5=1;
List<String> result=new LinkedList<>();
for(int i=1;i<=n;i++){
if(mod3==0&&mod5==0){
result.add("FizzBuzz");
}
else if (mod3==0) {
result.add("Fizz");
}
else if (mod5==0) {
result.add("Buzz");
}
else{
result.add(String.valueOf(i));
}
mod3++;
if(mod3==3){
mod3=0;
}
mod5++;
if(mod5==5){
mod5=0;
}
}
return result;
}
}
其余剩余别人的做法是直接对i%3的做法,还有i变为string类型除了string.valueof(i) 还有i+""