题目
题意
最高位为正,然后下一位为负,正负正负…,最后算出总和。
分析
最直接的思路就是先算出输入数据为多少位整数,然后按照题意去除各个位进行模拟。但是我们发现其实从高位往低位算和从低位往高位算都是一样的,分好整数位数是偶数和奇数就好了。长度为奇数,各个奇数位为正;长度为偶数,各个奇数位为负。
代码
class Solution {
public:
int alternateDigitSum(int n) {
int ans1 = 0, ans2 = 0;
int ans = 0;
int cnt = 1;
while(n){
if(cnt & 1) ans1 += n % 10;
else ans2 += n % 10;
n /= 10;
cnt ++;
}
if(cnt & 1) ans = -ans1 + ans2;
else ans = ans1 - ans2;
return ans;
}
};