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;
}
};
本文来自博客园,作者:EricsT,转载请注明原文链接:https://www.cnblogs.com/EricsT/p/18534689