南风知我不易

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

题目很简单,给定一个正整数n,如果n能整除3的话往list里加入Fizz,如果n能整除5的话往list里面加入Buzz,如果即能整除3又能整除5的话,加入FizzBuzz,代码也很简单

public List<String> fizzBuzz(int n){
        String[] strs = new String[n];
        for (Integer i = 1; i <=n ; i++) {
            if (i%3==0&&i%5==0){
                strs[i-1]="FizzBuzz";
            }else if (i%3==0){
                strs[i-1]="Fizz";
            }else if (i%5==0){
                strs[i-1]="Buzz";
            }else{
                strs[i-1]=i.toString();
            }
        }
        return Arrays.asList(strs);
    }

思考:

  • Integer.toString()int+""这两者的结果虽然相同,但是由于+语法糖的存在,字符串相加实际上是利用的StringBuilder实现的,所以效率上就低了很多,前者的写法更加合适
  • 为了更加通用,可以考虑使用HashMap存储对应的规则,遍历规则然后用一个字符串累加这样来得到结果,避免使用if else这样的结构,尤其是在规则比较多了之后
posted on 2020-11-12 21:15  南风知我不易  阅读(38)  评论(0编辑  收藏  举报