728. Self Dividing Numbers

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

所有题目解题方法和答案代码地址:https://github.com/fredfeng0326/LeetCode
    原文作者:fred_33c7
    原文地址: https://www.jianshu.com/p/c3678d239e15
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞