# Approach 1.
# Time Complexity: O(n)
# Space Complexity: O(1)
class Solution1:
def fizzBuzz(self, n):
if n <= 0:
return []
answer = []
for i in range(1, n + 1):
if i % 15 == 0:
answer.append('FizzBuzz')
elif i % 3 == 0:
answer.append('Fizz')
elif i % 5 == 0:
answer.append('Buzz')
else:
answer.append(str(i))
return answer
# Approach 2. String Concatenation
# Time Complexity: O(n)
# Space Complexity: O(1)
class Solution2:
def fizzBuzz(self, n):
if n <= 0:
return []
answer = []
for i in range(1, n + 1):
ans_str = ''
if i % 3 == 0:
ans_str += 'Fizz'
if i % 5 == 0:
ans_str += 'Buzz'
if ans_str != '':
answer.append(ans_str)
else:
answer.append(str(i))
return answer
Approach 3. Hash
Using
for key in fizz_buzz_dict.keys():
if i % key == 0:
ans_str += fizz_buzz_dict[key]
Instead of
if i % 3 == 0:
ans_str += 'Fizz'
if i % 5 == 0:
ans_str += 'Buzz'
# Approach 3. Hash
# Time Complexity: O(n)
# Space Complexity: O(1)
class Solution3:
def fizzBuzz(self, n):
if n <= 0:
return []
answer = []
fizz_buzz_dict = {3: 'Fizz', 5: 'Buzz'}
for i in range(1, n + 1):
ans_str = ''
for key in fizz_buzz_dict.keys():
if i % key == 0:
ans_str += fizz_buzz_dict[key]
if ans_str != '':
answer.append(ans_str)
else:
answer.append(str(i))
return answer