题目
输入一个正整数n
,返回一个list
,list
中的内容为1到n,但是将其中3的倍数替换为’Fizz’,5的倍数替换为’Buzz’,同时为3和5的倍数的替换为’FizzBuzz’
例子
- 15 ->
[ ‘1’, ‘2’, ‘Fizz’, ‘4’, ‘Buzz’, ‘Fizz’, ‘7’, ‘8’, ‘Fizz’, ‘Buzz’, ‘11’, ‘Fizz’, ‘13’, ‘14’, ‘FizzBuzz’ ]
tips
- 利用取模运算
答案
解法1:
def fizz_buzz(n):
results = []
for i in range(1, n + 1):
if i % 3 == 0 and i % 5 == 0:
results.append('FizzBuzz')
elif i % 3 == 0:
results.append('Fizz')
elif i % 5 == 0:
results.append('Buzz')
else:
results.append(str(i))
return results
性能:
- 时间复杂度
O(n)
- 空间复杂度
O(1)
关键点:1.利用取模运算
解法2:
def fizz_buzz(n):
l = list(range(1, n + 1))
for x in l:
if x % 15 == 0:
l[l.index(x)] = 'FizzBuzz'
elif x % 3 == 0:
l[l.index(x)] = 'Fizz'
elif x % 5 == 0:
l[l.index(x)] = 'Buzz'
else:
l[l.index(x)] = str(x) # 要把数字转换为str类型
return l
性能:
- 时间复杂度
O(n)
- 空间复杂度
O(n)
关键点:
- 利用取模运算
- 利用index()方法定位元素
解法3:
def fizz_buzz(n):
l = list(range(1, n + 1))
def getfizzbuzz(n):
if n % 15 == 0:
return 'FizzBuzz'
elif n % 5 == 0:
return 'Buzz'
elif n % 3 == 0:
return 'Fizz'
else:
return str(n)
return list(map(getfizzbuzz, l))
性能:
- 时间复杂度
O(2n)
- 空间复杂度
O(n)
关键点:
- 利用取模运算
- 利用map()方法对迭代对象处理