One - One Code All

Blog Content

Lintcode-9:Fizz Buzz 问题

Python 每日一练 算法 LintCode   2010-03-09 17:22:02
# -*- coding: utf-8 -*-

'''
Fizz Buzz 问题

给你一个整数n. 从 1 到 n 按照下面的规则打印每个数:

如果这个数被3整除,打印fizz.
如果这个数被5整除,打印buzz.
如果这个数能同时被3和5整除,打印fizz buzz.

样例
比如 n = 15, 返回一个字符串数组:

[
  "1", "2", "fizz",
  "4", "buzz", "fizz",
  "7", "8", "fizz",
  "buzz", "11", "fizz",
  "13", "14", "fizz buzz"
]

挑战 
Can you do it with only one if statement?

'''

class Solution(object):
    def fizzBuzz(self, n):
        """
        :type n: int
        :rtype: List[str]
        """
        return [str(i) if (i%3 != 0 and i%5 != 0) else ('Fizz'*(i%3==0) + 'Buzz'*(i%5==0)) for i in range(1, n+1)]



if __name__ == '__main__':
    sol = Solution()
    res = sol.fizzBuzz(20)
    print(res)

结果输出:

['1', '2', 'Fizz', '4', 'Buzz', 'Fizz', '7', '8', 'Fizz', 'Buzz', '11', 'Fizz', '13', '14', 'FizzBuzz', '16', '17', 'Fizz', '19', 'Buzz']


上一篇:Lintcode-8:旋转字符串
下一篇:Lintcode-10:字符串的不同排列

The minute you think of giving up, think of the reason why you held on so long.