LeetCode 2544[交替数字和]

题目

链接

LeetCode 2544[交替数字和]

详情

实例

提示

题解

思路

依次求出各位数字,然后进行计算

循环找出各位数字:(循环体如下)

  将数字对10取余得到对应位数的数字,加入到容器 numVec

  数字除以10,得到新的数字,此数字是不包含已获取数字的位数

循环退出的条件:数字等于0

循环退出后 numVec 按照下标由小到大,存储着数字的位数由低到高

 

定义一个布偶型变量 isPos,作为其符号是否是正号的标志位:

  true 为正号,即加上此数值

  false为负号,即减去此数值

从容器最后一个元素往前遍历,即从高位往低位遍历,isPos 初始值为 true

每次遍历后 isPos 均取反

对各位数字求和最后返回

代码

class Solution {
public:
    int alternateDigitSum(int n) {
        
        vector<int> numVec;

        while (n)
        {
            numVec.push_back(n % 10);
            n /= 10;
        }

        bool isPos = true;
        int iRet = 0;
        
        for (int i = numVec.size() - 1; i >= 0; i--)
        {
            if (isPos)
                iRet += numVec.at(i);
            else
                iRet -= numVec.at(i);
            
            isPos = !isPos;
        }

        return iRet;
    }
};
posted @ 2024-11-08 11:05  EricsT  阅读(18)  评论(0编辑  收藏  举报