【LetMeFly】3754.连接非零数字并乘以其数字和 IO(1)非字符串写法力扣题目链接https://leetcode.cn/problems/concatenate-non-zero-digits-and-multiply-by-sum-i/给你一个整数n。将n中所有的非零数字按照它们的原始顺序连接起来形成一个新的整数x。如果不存在非零数字则x 0。sum为x中所有数字的数字和。返回一个整数表示x * sum的值。示例 1输入n 10203004输出12340解释非零数字是 1、2、3 和 4。因此x 1234。数字和为sum 1 2 3 4 10。因此答案是x * sum 1234 * 10 12340。示例 2输入n 1000输出1解释非零数字是 1因此x 1且sum 1。因此答案是x * sum 1 * 1 1。提示0 n 109解题方法不断处以10当n nn非零时不断取出n nn在十进制下的个位t tt并将n nn除以10 1010并想下取整。如果个位t tt非零则进行处理求和使用一个变量c n t cntcnt记录所有非零t tt的和拼接使用一个变量c o n concon记录所有非零t tt十进制下的拼接结果。假设当前c o n concon为234 234234且t tt为1 11怎么把1 11拼接到234 234234的前面呢令c o n t × 10 3 cont\times 10^3cont×103即可。这个10 3 10^3103可以使用一个变量p o w powpow来记录每次拼接完成后p o w p o w × 10 powpow\times 10powpow×10。最终c n t × c o n cnt\times concnt×con即为答案。时间复杂度O ( log n ) O(\log n)O(logn)空间复杂度O ( 1 ) O(1)O(1)AC代码C/* * LastEditTime: 2026-07-07 11:50:28 */typedeflonglongll;classSolution{public:llsumAndMultiply(intn){ll cnt0,con0,pow1;while(n){ll tn%10;n/10;if(!t){continue;}conpow*t;pow*10;cntt;}returncnt*con;}};同步发文于CSDN和我的个人博客原创不易转载经作者同意后请附上原文链接哦~千篇源码题解已开源