LeetCode 2520. Count the Digits That Divide a Number
周賽326。元旦一大早就在打比賽,真是美好的新年。
題目
輸入整數num,求num中有幾個數字能夠整除num。
解法
最直觀的方法,把num轉成字串後逐一拆出數字,判斷能不能整除num。
時間複雜度O(log N)。空間複雜度O(log N)。
class Solution:
def countDigits(self, num: int) -> int:
ans=0
for c in str(num):
n=int(c)
if num%n==0:
ans+=1
return ans
也可以寫成一行。
class Solution:
def countDigits(self, num: int) -> int:
return sum(num%int(c)==0 for c in str(num))
轉成字串需要額外的空間,也可以直接在num上面操作,透過取餘數的方式拆出每個數字。
時間複雜度O(log N)。空間複雜度O(1)。
class Solution:
def countDigits(self, num: int) -> int:
ans=0
x=num
while x>0:
digit=x%10
if num%digit==0:
ans+=1
x//=10
return ans