直接模拟过程就可以。
将 a a a, b b b 两个数串联得到的新数为 c c c,则 c = a × 1 0 x + b c = a \times 10^x+b c=a×10x+b, x x x 为 b b b 的位数。
因为数据大于 0 0 0 ,所以不需要特判 0 0 0 的情况。
class Solution {
public:
long long findTheArrayConcVal(vector<int>& nums) {
int n = nums.size();
long long res = 0;
for(int i = 0; i < (n/2); i++)
res += cal(nums[i], nums[n-i-1]);
if(n%2)
res += nums[n/2];
return res;
}
int cnt(int x){
int res = 0;
while(x){
res++;
x /= 10;
}
return res;
}
long long cal(int a, int b){
return 1ll * a * pow(10, cnt(b)) + b;
}
};