领扣简单算法题--FizzBuzz问题

    技术2022-07-16  70

    问题如下: 给你一个整数n. 从 1 到 n 按照下面的规则打印每个数:

    如果这个数被3整除,打印fizz. 如果这个数被5整除,打印buzz. 如果这个数能同时被3和5整除,打印fizz buzz. 如果这个数既不能被 3 整除也不能被 5 整除,打印数字本身。

    挑战 你是否可以只用一个 if 来实现

    如果没有挑战,很容易想到解决思路

    public List<String> fizzBuzz(int n) { // write your code here List<String> list=new ArrayList<String>(); for (int i=1;i<=n;i++ ){ if (i%3==0&&i%5==0){ list.add("fizz buzz"); } else if (i%3==0){ list.add("fizz"); } else if (i%5==0){ list.add("buzz"); } else{ list.add(i+""); } } return list; }

    用一个if实现算法? 思路:用替换的思路来将3的倍数替换掉;然后用替换5的倍速,同时时如替换5的倍数时,发现替换值为"fizz",则用"fizz buzz"替换,否则替换成"buzz"。

    代码如下:

    public List<String> fizzBuzz(int n) { // write your code here List<String> list=new ArrayList<String>(); //先将列表中的所有位置用i填充 for (int i=1;i<=n ;i++ ){ list.add(i+""); } //替换,先将3的倍数全部替换 for(int i=1;i*3<=n;i++){ list.set(i*3-1,"fizz"); } for (int i=1;i*5<=n ;i++ ){ if (list.get(i*5-1).equals("fizz")){//如果被替换的值为"buzz"则说明该值也为3的倍数 list.set(i*5-1,"fizz buzz"); } else{//否则,只为5的倍数 list.set(i*5-1,"buzz"); } } return list; }
    Processed: 0.011, SQL: 9