12.<Important> Self Dividing Number

Title:

 A self-dividing number is a number that is divisible by every digit it contains.

For example, 128 is a self-dividing number because 128 % 1 == 0, 128 % 2 == 0, and 128 % 8 == 0.

Also, a self-dividing number is not allowed to contain the digit zero.

Given a lower and upper number bound, output a list of every possible self dividing number, including the bounds if possible. 

Example 1:

Input: 
left = 1, right = 22
Output: [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 22]

Note:

 The boundaries of each input argument are 1 <= left <= right <= 10000.

Analysis of Title:

1.Is Dividing-Number:128%1==0,128%2==0,128%8==0

2.Not Dividing-Number:

  number don't include zero,such as 120.

  128%1!=0

The second method is easier to implement.

Python:

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

Analysis of Code:

1.

for:

  exp

else:

  exp

When every for finish,the else will execute.

2.

for:

  break

else:

  exp

when break,the else will not execute.

原文地址:https://www.cnblogs.com/sxuer/p/10683463.html