首页 > 其他分享 >【leetcode】412_FizzBuzz_C

【leetcode】412_FizzBuzz_C

时间:2024-02-29 13:58:21浏览次数:28  
标签:FizzBuzz char 字符串 412 Buzz answer leetcode Fizz

题目描述

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

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

https://leetcode.cn/problems/fizz-buzz/description/

示例

示例 1:

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

示例 2:

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

示例 3:

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

解题思路

  • 1

在内存中开辟一块连续的空间,每个小空间是一个字符,将这块空间分割成多个小块空间,这就是字符串数组

题目中最长的字符串是"FizzBuzz",该字符串占9个小空间(末尾有个终止符),所以每个小块空间中有9个字符

于是有

char* arr = (char*)malloc(sizeof(char) * 9 * n);
char** answer = (char**)malloc(sizeof(char*) * n);

arr 指针指向开辟的空间,answer 指针对该空间起到一个索引的作用,相当于创建了一个字符串数组

  • 2

如果一个数是3和5的倍数,那么这个数也是15的倍数

  • 3

将数转换成字符串用到函数 sprintf

C 库函数 int sprintf(char *str, const char *format, ...) 发送格式化输出到 str 所指向的字符串。

代码实现

char ** fizzBuzz(int n, int* returnSize){
    *returnSize = n;
    int i = 0;
    char* arr = (char*)malloc(sizeof(char) * 9 * n);
    char** answer = (char**)malloc(sizeof(char*) * n);
    for (i = 1; i <= n; i++)
    {
        answer[i - 1] = arr + (i - 1) * 9;
        if (i % 15 == 0)
            strcpy(answer[i - 1], "FizzBuzz");
        else if (i % 3 == 0)
            strcpy(answer[i - 1], "Fizz");
        else if (i % 5 == 0)
            strcpy(answer[i - 1], "Buzz");
        else 
            sprintf(answer[i - 1], "%d", i);
    }
    *answer = arr;
    return answer;
}

标签:FizzBuzz,char,字符串,412,Buzz,answer,leetcode,Fizz
From: https://www.cnblogs.com/changbaiqiusha/p/18043525

相关文章

  • 代码随想录算法训练营day08 | leetcode 344. 反转字符串、541. 反转字符串 II、54. 替
    目录题目链接:344.反转字符串-简单题目链接:541.反转字符串II-简单题目链接:[54.替换数字](题目页面(kamacoder.com))题目链接:151.反转字符串中的单词-中等题目链接:[55.右旋字符串](题目页面(kamacoder.com))题目链接:344.反转字符串-简单题目描述:编写一个函数,其作用是将......
  • [LeetCode] 2583. Kth Largest Sum in a Binary Tree
    Youaregiventherootofabinarytreeandapositiveintegerk.Thelevelsuminthetreeisthesumofthevaluesofthenodesthatareonthesamelevel.Returnthekthlargestlevelsuminthetree(notnecessarilydistinct).Iftherearefewerthan......
  • Leetcode 53. 最大子数组和
    题目给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组是数组中的一个连续部分。输入输出样例输入:nums=[-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组[4,-1,2,1]的和最大,为6。输入:nums=[1]输出:1输入:nums......
  • Leetcode 76. 最小覆盖子串
    题目描述(难度hard)给你一个字符串S、一个字符串T,请在字符串S里面找出:包含T所有字母的最小子串。示例:输入:S="ADOBECODEBANC",T="ABC"输出:"BANC"说明:如果S中不存这样的子串,则返回空字符串""。如果S中存在这样的子串,我们保证它是唯一的答案。解题思路......
  • LeetCode二分查找 swift 面试
     funcbinarySearch(_array:[Int],_target:Int)->Int?{varleft=0varright=array.count-1whileleft<=right{letmid=(left+right)/2ifarray[mid]==target{returnmid......
  • Leetcode刷题第十四天-动态规划
    674:最长连续递增序列链接:674.最长连续递增序列-力扣(LeetCode)1classSolution:2deffindLengthOfLCIS(self,nums:List[int])->int:3n=len(nums)4dp=[1]*n5if(n<1):return06foriinrange(1,n):7if......
  • LeetCode] 2476. Closest Nodes Queries in a Binary Search Tree
    Youaregiventherootofabinarysearchtreeandanarrayqueriesofsizenconsistingofpositiveintegers.Finda2Darrayanswerofsizenwhereanswer[i]=[mini,maxi]:miniisthelargestvalueinthetreethatissmallerthanorequaltoqueries[......
  • Leetcode刷题第十三天-动态规划
    198:打家劫舍链接:198.打家劫舍-力扣(LeetCode)线性数组1classSolution:2defrob(self,nums:List[int])->int:3#dp[i]偷房间i能获得的最大价值4#推导公式dp[i]=max(dp[i-2]+nums[i],dp[i-1]):dp[i-1]不偷房间i,dp[i-2]+nums[i]偷房间i5......
  • 【leetcode】数组篇刷题 --滑动窗口
    /**@lcapp=leetcode.cnid=209lang=cpp**[209]长度最小的子数组*找最短的子数组*///@lccode=startclassSolution{public:intminSubArrayLen(inttarget,vector<int>&nums){//滑动窗口,//一个计算总和intsum=0;......
  • Leetcode 560 和为k的子数组
    Problem:560.和为K的子数组难点怎么通过前缀和找到和为k的子数组如官方题解所言,[j···i]的子数组=k可转化为pre[i]-pre[j-1]==k要找到前缀和找到和为k的子数组个数就是“找到当前前缀和pre[i]-之前求得的前缀和=k”的总情况。我们通过哈希表记录每个前缀和(的值)出......