写一个程序,输出从 1 到 n 数字的字符串表示。(第一个和第二个是我写的,最直接都是这么朴实无华)
class Solution(object):
def fizzBuzz1(self, n):
"""
:type n: int
:rtype: List[str]
"""
ret_list = []
for i in range(1, n + 1):
if i % 3 == 0 and i % 5 == 0:
ret_list.append("FizzBuzz")
elif i % 3 == 0:
ret_list.append("Fizz")
elif i % 5 == 0:
ret_list.append("Buzz")
else:
ret_list.append(str(i))
return ret_list
def fizzBuzz2(self, n):
"""在计算质数的时候讲到的埃氏筛
:type n: int
:rtype: List[str]
"""
if n < 1:
return []
ret_list = [0 for _ in range(n + 1)]
for i in range(1, n + 1):
if ret_list[i] == 0:
times3 = 3 * i
while times3 < n + 1:
if ret_list[times3] == 0:
ret_list[times3] = "Fizz"
times3 += 3
times5 = 5 * i
while times5 < n + 1:
if ret_list[times5] == 0:
ret_list[times5] = "Buzz"
else:
if ret_list[times5] == "Fizz":
ret_list[times5] += "Buzz"
times5 += 5
ret_list[i] = str(i)
return ret_list[1:]
def fizzBuzz(self, n):
""" 这种比上面的好
:type n: int
:rtype: List[str]
"""
ans = [str(i) for i in range(1,n+1)]
cur = 3
while cur <= n:
ans[cur-1] = "Fizz"
cur += 3
cur = 5
while cur <= n:
ans[cur-1] = "Buzz"
cur += 5
cur = 15
while cur <= n:
ans[cur-1] = "FizzBuzz"
cur += 15
return ans
if __name__ == '__main__':
s1 = Solution()
prices = 100
root = s1.fizzBuzz(prices)
print(root)