1281. 整数的各位积和之差

152 阅读1分钟

题目

给你一个整数 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

题解

这题我们只要依次取出数字 n的每一位数字,并计算每一位数字的乘积 multi和每一位的数字之和sum, 最后返回multi - sum 即可

我们可以依次取出 n的最低位来得到 n的每一位数字

  • 通过取余数操作 n % 10 得到 n 的最低位
  • 通过整除操作 n = Math.floor(n / 10) 去掉当前n的最低位。

代码

/**
 * @param {number} n
 * @return {number}
 */
var subtractProductAndSum = function(n) {
    let sum = 0;
    let multi = 1;
    while(n > 0) {
        let bit = n  % 10;
        sum += bit;
        multi *= bit;
        n = Math.floor(n / 10);
    }
    return multi - sum;
};