Leetcode_2544.交替数字和

题目

Leetcode_2544.交替数字和_第1张图片

题意

最高位为正,然后下一位为负,正负正负…,最后算出总和。

分析

最直接的思路就是先算出输入数据为多少位整数,然后按照题意去除各个位进行模拟。但是我们发现其实从高位往低位算和从低位往高位算都是一样的,分好整数位数是偶数和奇数就好了。长度为奇数,各个奇数位为正;长度为偶数,各个奇数位为负。

代码

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; 
    }
};

你可能感兴趣的:(leetcode,算法)