728. 自除数

https://leetcode-cn.com/problems/self-dividing-numbers/

解法一:

比较笨的思路,当时刚学py。遍历数组,对每一个数,从低位到高位判断,用模运算%和int除法

class Solution:
    def selfDividingNumbers(self, left, right):
        """
        :type left: int
        :type right: int
        :rtype: List[int]
        """
        res = []
        for i in range(left, right+1):
            k = i
            while k > 0:
                j = k % 10
                if j == 0 or i % j != 0:
                    break
                k = k // 10
            if k == 0:
                res.append(i)
        return res

解法二:

熟练运用py整数与字符串互相转换

class Solution:
    def selfDividingNumbers(self, left: int, right: int) -> List[int]:
        res = []
        for num in range(left, right+1):
            strs = str(num)  #转成字符串
            if '0' not in strs:  #排除带0的
                i = 0
                #对每一位检验
                while i < len(strs) and num % int(strs[i]) == 0:
                    i += 1 
                #若能走到最后,说明是自除数
                if i == len(strs):
                    res.append(num)
        return res

最后更新于