算法提高之LeetCode刷题LeetCode Python算法

728. Self Dividing Numbers

2018-06-26  本文已影响0人  fred_33c7

题目地址:https://leetcode.com/problems/self-dividing-numbers/description/
大意:判断一个数字各个位上不含数字0,且每个位上的数字都能被这个数字整除,返回给定范围内一系列数字符合这个条件的数字。

主要是先写一个方法判定这个数字到底是不是能符合条件

def isDividingNumber(self, num):
        if '0' in str(num):
            return False
        else:
            return 0 == sum(num%int(i) for i in str(num))

    def selfDividingNumbers(self, left, right):
        """
        :type left: int
        :type right: int
        :rtype: List[int]
        """
        list =[]
        for item in range(left,right+1,1):
            if self.isDividingNumber(item):
                list.append(item)
        return list

但是感觉写的有点麻烦,参考了一下discuss里面大神的代码,果然有更简单的。只要3行。

def selfDividingNumbers2(self, left, right):
        """
        :type left: int
        :type right: int
        :rtype: List[int]
        """
        is_self_dividing = lambda num: '0' not in str(num) and all([num % int(digit) == 0 for digit in str(num)])
        x = filter(is_self_dividing, range(left, right + 1))
        return list(x)

知识点:

all(),filter()这两个方法的使用

上一篇 下一篇

猜你喜欢

热点阅读