題目
連結
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;
}
};