728. Self Dividing Numbers

作者: fred_33c7 | 来源:发表于2018-06-26 10:20 被阅读0次

    题目地址: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()这两个方法的使用

    相关文章

      网友评论

        本文标题:728. Self Dividing Numbers

        本文链接:https://www.haomeiwen.com/subject/xfspyftx.html