其他分享
首页 > 其他分享> > LeetCode——412. Fizz Buzz

LeetCode——412. 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"
]

题解思路

把数字变成字符串然后把除数是3或者5的特殊数字用字符串代替存储到一个List集合

无非就是这三种情况,而且还按照自然数排列,最好的方法无非是for循环加几个if else判断

这里就是需要把int型的数字存放到String的集合中,这里一共有三种办法
  1. i + ""
  2. String.valueOf(i)
  3. Integer.toString(i)

还有List接口的三种常见的实现类,这里因为要多次插入新元素,所以我采用了方便插入的LinkedList实现类

正确代码

class Solution {
    public List<String> fizzBuzz(int n) {
        List<String> strings = new LinkedList<>();

        for (int i = 1; i <= n; i++) {
            if (i % 3 == 0 && i % 5 == 0){
                strings.add("FizzBuzz");
            }else if(i % 3 ==0 && i % 5 != 0){
                strings.add("Fizz");
            }else if(i % 3 !=0 && i % 5 == 0){
                strings.add("Buzz");
            }else {
                strings.add(String.valueOf(i));
            }
        }
        
        return strings;
    }
}

总结

这里总结以下List接口,List是继承Collection接口,常用的实现类有ArrayList、LinkedList和Vector

区别:
  ArrayList,底层是动态数组,可以动态的增加数组大小,查找方便,增删改不方便,线程不安全
  LinkedList,底层是双向链表,增删改方便,查找不方便,线程也是不安全
  Vector,底层也是动态数组,不过扩容方式和ArrayList不同,线程安全,他还有一个子类Stack,效率较低

如果文章存在问题或者存在更好的题解,欢迎在评论区斧正和评论,各自努力,你我最高处见

标签:LinkedList,ArrayList,List,线程,412,Buzz,LeetCode,Fizz
来源: https://www.cnblogs.com/bc-song/p/14613376.html