Leetcode每日一题 —— 3754. 连接非零数字并乘以其数字和 I

魔法师 2026-07-07 08:57 1



思路


直接模拟即可,当然字符串批处理也可以。


代码


class Solution {
public long sumAndMultiply(int n) {
long sum = 0;
int pow10 = 1;
int nVal = 0;
while (n > 0) {
int x = n % 10;
n /= 10;
if (x > 0) {
nVal += pow10 * x;
sum += x;
pow10 *= 10;
}
}
return sum * nVal;
}
}
最新回复 (5)
  • SomeBottle 07-07 08:57
    1

    按题目要求模拟即可。


    class Solution {
    public:
    long long sumAndMultiply(int n) {
    long long sum=0,num=0,factor=1;
    while(n>0){
    int r=n%10;
    if(r>0){
    num+=r*factor;
    factor*=10;
    sum+=r;
    }
    n/=10;
    }
    return sum*num;
    }
    };
  • Infinity4B 07-07 09:41
    2

    算术评级 第 477 场周赛Q1 难度分 1248


    最喜欢的简单题


    class Solution:
    def sumAndMultiply(self, n: int) -> int:
    n=str(n)
    sum=0
    ans=0
    for s in n:
    num = int(s)
    if num!=0:
    sum+=num
    ans=ans*10+num
    return ans*sum
  • Lvvvv 07-07 09:59
    3

    简单题。


    class Solution {
    public:
    long long sumAndMultiply(int n) {
    long long res = 0;
    int sum = 0;
    std::string s = std::to_string(n);
    for(const auto& c : s) {
    int v = c - '0';
    if(v) res = res * 10 + v;
    sum += v;
    }
    return res * sum;
    }
    };
  • snow 07-07 11:40
    4
    class Solution:
    def sumAndMultiply(self, n: int) -> int:
    s = str(n).replace("0", "")
    return sum(int(c) for c in s) * int(s) if s else 0
  • Jerry2008 08-02 17:17
    5
    long long sumAndMultiply(int n) {
    if ( n == 0 )
    {
    return 0;
    }

    int p10[10] = {1,10,100,1000,10000,100000,1000000,10000000,100000000};

    long long x = 0;
    int sum = 0;

    int j = 0; //数组长度
    int temp[9]; //临时放数

    int x_0 = n;
    for (int i = 0; x_0 > 0; i++)
    {
    if ( x_0 % 10 != 0 )
    {
    temp[j] = x_0 % 10;
    j++;
    }
    x_0 /= 10;
    }

    for (int k = 0; k < j; k++ )
    {
    sum += temp[k];
    x += p10[k]*temp[k];
    }

    return x*sum;
    }
* 帖子来源Linux.do
返回