给你一个整数 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 (以字符串形式)如果上述条件全不满足。
直接遍历即可。
Python写法
class solution:
def FizzBuzz(n):
answer = [0] * (n + 1)
for i in range(0, n + 1):
if (i % 3 == 0) & (i % 5 == 0):
answer[i] = "FizzBuzz"
elif (i % 3 == 0) & (i % 5 != 0):
answer[i] = "Fizz"
elif (i % 3 != 0) & (i % 5 == 0):
answer[i] = "Buzz"
else:
answer[i] = str(i)
return answer[1:] # 从一返回
a = solution.FizzBuzz(15)
print("answer[0]的值是%s" % a[0]) # 可见返回后的值是从a[0]开始赋值的
for i in range(0, 15):
print(a[i])
✅ 注意range的步长为正数的时候是左开右闭的
C语言写法
char **FizzBuzz(int n)
// int main()
{
// 创建二维数组
char **answer = (char **)(malloc((n + 1) * sizeof(char *)));
for (int i = 1; i <= n; i++)
{
answer[i] = (char *)(malloc(9 * sizeof(char)));
if ((i % 3 == 0) & (i % 5 == 0))
{
strcpy(answer[i], "FizzBuzz");
}
else if ((i % 3 == 0) & (i % 5 != 0))
{
strcpy(answer[i], "Fizz");
}
else if ((i % 3 != 0) & (i % 5 == 0))
{
strcpy(answer[i], "Buzz");
}
else
{
sprintf(answer[i], "%d", i);
}
printf("answer[%d] is %s\n", i, answer[i]);
}
printf("over!\n");
printf("answer[1]的地址%d\n", answer[1]);
printf("answer的地址%d\n", sizeof(answer));
return answer + 1;
}
int main()
{
char **p = FizzBuzz(15);
printf("p[0] 的地址:%d\n", p[0]);
printf("P[0]的长度:%d\n", sizeof(p[0]));
for (int i = 0; i < 15; i++)
{
printf("answer[%d] = %s\n", i + 1, p[i]);
free(p[i]);
}
free(p);
return 0;
}
✅ 注意动态开辟空间之后释放空间
✅ 注意sprintf的用法, sprintf(answer[i], "%d", i);
,可以将数字转化为字符串