题目
链接
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);elseiRet -= numVec.at(i);isPos = !isPos;}return iRet;}
};