leetcode 1281 python

1281. 整数的各位积和之差


难度 简单 | 标签 数学


Description

给你一个整数 n,请你帮忙计算并返回该整数「各位数字之积」与「各位数字之和」的差。

示例 1:

输入:n = 234
输出:15 
解释:
各位数之积 = 2 * 3 * 4 = 24 
各位数之和 = 2 + 3 + 4 = 9 
结果 = 24 - 9 = 15

示例 2:

输入:n = 4421
输出:21
解释: 
各位数之积 = 4 * 4 * 2 * 1 = 32 
各位数之和 = 4 + 4 + 2 + 1 = 11 
结果 = 32 - 11 = 21

提示:

  • 1 <= n <= 10^5

My Solution

class Solution:
    def subtractProductAndSum(self, n: int) -> int:
        s = 0
        mul = 1
        for i in str(n):
            s += int(i)
            mul *= int(i)
        return mul-s

参考方法:

思路:先转为字符串,随后用join函数分隔每一位数并添加相应的运算符,最后eval函数做运算

class Solution:
    def subtractProductAndSum(self, n: int) -> int:
        return eval("*".join(str(n))) - eval("+".join(str(n)))

python知识点:

1.join()函数

语法: 'sep'.join(seq)
参数说明
sep:分隔符。可以为空
seq:要连接的元素序列、字符串、元组、字典
上面的语法即:以sep作为分隔符,将seq所有的元素合并成一个新的字符串

返回值:返回一个以分隔符sep连接各个元素后生成的字符串

实例

#对序列进行操作(分别使用' '与':'作为分隔符)

>>> seq1 = ['hello','good','boy','doiido']
>>> print ' '.join(seq1)
hello good boy doiido
>>> print ':'.join(seq1)
hello:good:boy:doiido

#对字符串进行操作

>>> seq2 = "hello good boy doiido"
>>> print ':'.join(seq2)
h:e:l:l:o: :g:o:o:d: :b:o:y: :d:o:i:i:d:o

#对元组进行操作

>>> seq3 = ('hello','good','boy','doiido')
>>> print ':'.join(seq3)
hello:good:boy:doiido

#对字典进行操作

>>> seq4 = {'hello':1,'good':2,'boy':3,'doiido':4}
>>> print ':'.join(seq4)
boy:good:doiido:hello

2.eval() 函数

用来执行一个字符串表达式,并返回表达式的值。

实例

>>>x = 7 
>>> eval( '3 * x' ) 
21 
>>> eval('pow(2,2)') 
4 
>>> eval('2 + 2') 
4 
>>> n=81 
>>> eval("n + 4") 
85
posted @ 2021-01-27 16:30  文学是可爱的  阅读(85)  评论(0)    收藏  举报