因为这样创建字符串,程序的性能足足提升了好几倍

163 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

很多人在将数值类型转换为字符串的时候为了贪图方便,都是直接采用"" + num的方式来实现的,今天我就给你看下这种方式与String.valueOf()两者在执行用时上有多大区别,想直接看结果的XDJMM拉到最下方即可。

题目

给你一个整数 n ,找出从 1n 各个整数的 Fizz Buzz 表示,并用字符串数组 answer下标从 1 开始)返回结果,其中:

  • answer[i] == "FizzBuzz" 如果 i 同时是 35 的倍数。
  • answer[i] == "Fizz" 如果 i3 的倍数。
  • answer[i] == "Buzz" 如果 i5 的倍数。
  • answer[i] == i 如果上述条件全不满足。

示例

输入: n = 3
输出: ["1","2","Fizz"]

输入: n = 5
输出: ["1","2","Fizz","4","Buzz"]

输入:n = 15
输出:["1","2","Fizz","4","Buzz","Fizz","7","8","Fizz","Buzz","11","Fizz","13","14","FizzBuzz"]

提示

  • 1 <= n <= 10410^4

解题思路

题目要求在[1,n]的范围中,将符合条件的数值转换成字符串。这里我们可以使用 for循环遍历一遍,对每一个元素进行取余判断是否符合条件,把结果添加到集合中返回。

代码实现

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

        for(int i = 1; i <= n; ++i){
            // 这里记得一定要将两个同时符合的条件放在前面
            if(i % 3 == 0 && i % 5 == 0){
                ans.add("FizzBuzz");
            }else if(i % 3 == 0){
                ans.add("Fizz");
            }else if(i % 5 == 0){
                ans.add("Buzz");
            }else{
                ans.add(String.valueOf(i));
            }
        }
        return ans;
    }
}

执行用时对比 image.png

image.png

复杂度分析

  • 时间复杂度:O(N)O(N)
  • 空间复杂度:O(1)O(1)

最后

文章有写的不好的地方,请大佬们不吝赐教,错误是最能让人成长的,愿我与大佬间的距离逐渐缩短!

如果觉得文章对你有帮助,请 点赞、收藏、关注、评论 一键四连支持,你的支持就是我创作最大的动力!!!

题目出处: leetcode-cn.com/problems/fi…