class Solution:
def subtractProductAndSum(self, n: int) -> int:
list_n = list(str(n))
product_res = 1
sum_res = 0
for i in list_n:
product_res = product_res * int(i)
sum_res += int(i)
return product_res - sum_res
直白思路:乘积的初始值设置为1,加总的初始值设置为0。先把数字转化为字符串,然后依次遍历,储存遍历的乘积和加总结果,最后做差。list(str(n))可以优化为直接for循环str(n)。但优化程度不高,没有直接修改。
简单思路,结果也不是很好。
官方思路基本相同,但代码简洁度可以学习学习。本以为还有更高级的解法,但目前好像只看到了这个——直接模拟过程。
class Solution:
def subtractProductAndSum(self, n: int) -> int:
add, mul = 0, 1
while n > 0:
digit = n % 10
n //= 10
add += digit
mul *= digit
return mul - add