题目
意思很简单,给出一个n,输出1-n的整数,如果整数是3的倍数,输出”Fizz”,如果是5的倍数,输出”Buzz”,如果是15(同时是3和5的倍数)的倍数,输出”FizzBuzz”。
题解
最简单的解法就是3组if-else判断,利用C语言的char **(二级char指针)存储需要返回的字符串数组(第一级为字符串,第二级为数组)。提交代码框中有说明两点:
返回*returnSize大小的的数组(其实就是n吧)
所以* returnSize = n;貌似没必要,但是如果不写就会返回空数组。
返回的arr数组必须被malloced申请。
char * arr = (char *)malloc(n*sizeof(char *));(这种字符串处理还是java方便。。)
/**
* Return an array of size *returnSize.
* Note: The returned array must be malloced, assume caller calls free().
*/
char** fizzBuzz(int n, int* returnSize) {
char ** arr = (char **)malloc(n*sizeof(char *));
int i;
for(i = 0;i < n;i++)
{
if(((i+1)%15) == 0)
{
arr[i] = (char *)malloc(8*sizeof(char));
arr[i] = "FizzBuzz";
}
else if(((i+1)%3) == 0)
{
arr[i] = (char *)malloc(4*sizeof(char));
arr[i] = "Fizz";
}
else if(((i+1)%5) == 0)
{
arr[i] = (char *)malloc(4*sizeof(char));
arr[i] = "Buzz";
}
else
{
arr[i] = (char *)malloc(sizeof(char));
sprintf(arr[i],"%d",i+1);
}
}
* returnSize = n;
return arr;
//free(arr);
}