40.33%
class Solution(object):
def selfDividingNumbers(self, left, right):
"""
:type left: int
:type right: int
:rtype: List[int]
"""
lists = []
for i in range(left,right+1):
s_i = str(i)
if '0' in s_i:
continue
can = True
for char in s_i:
if i%int(char) != 0:
can = False
if can==True:
lists.append(i)
return lists
----------------------------------------
自己再尝试一种不转成string的方法
84.74%
class Solution(object):
def selfDividingNumbers(self, left, right):
"""
:type left: int
:type right: int
:rtype: List[int]
"""
lists = []
for i in range(left,right+1):
can = True
num = i
while(True):
a = num%10
if a==0 or i%a!=0:
can = False
break
if ((num-a)/10)==0:
break
else:
num = (num-a)/10
if can==True:
lists.append(i)
return lists
------------------------------------------
74.39%
这个主要是发现,判断a%b>0要比a%b!=0要速度快,以后查看是否能整除的时候可以注意一下
class Solution(object):
def selfDividingNumbers(self, left, right):
"""
:type left: int
:type right: int
:rtype: List[int]
"""
lists = []
def self_divided(n):
for i in str(n):
if i=='0' or n%int(i)>0:
return False
return True
for i in range(left,right+1):
if self_divided(i):
lists.append(i)
return lists
-------------------------------------
下面这个又是耍花腔时间,两行解决问题
27.29%
class Solution(object):
def selfDividingNumbers(self, left, right):
"""
:type left: int
:type right: int
:rtype: List[int]
"""
is_self_dividing = lambda x: '0' not in str(x) and all([x%int(digit)==0 for digit in str(x)])
return filter(is_self_dividing, range(left,right+1))