每日力扣算法题(简单篇)

412.Fizz Buzz

原题:

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

  • answer[i] == "FizzBuzz" 如果 i 同时是 3 和 5 的倍数。
  • answer[i] == "Fizz" 如果 i 是 3 的倍数。
  • answer[i] == "Buzz" 如果 i 是 5 的倍数。
  • answer[i] == i (以字符串形式)如果上述条件全不满足

 解题思路:

读题可发现,我们要插入的一共三种情况,一种是“Fizz Buzz”,一种是“Fizz”,还有一种是“Buzz”根据这些特征我们可以写出判断语句,此外我们还可以通过提前创建字符串给指针的方式来节省空间,再通过sprintf来处理整数的情况

储备知识:
sprintf函数,函数原型sprintf(指针,要插入的数据),返回值为成功插入指针所指字符数组的元素个数,具体用法可参考:写文章-CSDN创作中心icon-default.png?t=N7T8https://mp.csdn.net/mp_blog/creation/editor/134991150

n级指针:可将一级指针就是指向一个数据的指针,而二级指针就是指向指针变量的一个指针

例如:int n=5;

        int *a=&n;

        int **b=&a;

        可将此代码复制后尝试输出,感受n级指针

都看到这里了,点个赞吧,可以的话点个关注吧

源代码:

char ** fizzBuzz(int n, int* returnSize){

    char *FB="FizzBuzz",*F="Fizz",*B="Buzz";

    char **ans=malloc(sizeof(char*)*n);

    for(int i=0;i

    {

        if((i+1)%3==0&&(i+1)%5==0)

        {

            ans[i]=FB;

        }else if((i+1)%3==0)

        {

            ans[i]=F;

        }else if((i+1)%5==0)

        {

            ans[i]=B;

        }else

        {

            char *num=malloc(sizeof(char)*5);

            sprintf(num,"%d",i+1);

            ans[i]=num;

        }

    }

    *returnSize=n;

    return ans;

}

你可能感兴趣的:(力扣简单篇,算法,leetcode,职场和发展)