You are given a positive integer n
. Each digit of n
has a sign according to the following rules:
- The most significant digit is assigned a positive sign.
- Each other digit has an opposite sign to its adjacent digits.
Return the sum of all digits with their corresponding sign.
Example 1:
Input: n = 521 Output: 4 Explanation: (+5) + (-2) + (+1) = 4.
Example 2:
Input: n = 111 Output: 1 Explanation: (+1) + (-1) + (+1) = 1.
Example 3:
Input: n = 886996 Output: 0 Explanation: (+8) + (-8) + (+6) + (-9) + (+9) + (-6) = 0.
Constraints:
1 <= n <= 109
Companies: eBay
Related Topics:
Math
Similar Questions:
- Add Digits (Easy)
- Minimum Sum of Four Digit Number After Splitting Digits (Easy)
- Separate the Digits in an Array (Easy)
// OJ: https://leetcode.com/problems/alternating-digit-sum
// Author: github.com/lzl124631x
// Time: O(lgN)
// Space: O(1)
class Solution {
public:
int alternateDigitSum(int n) {
int ans = 0, cnt = 0;
while (n) {
int d = n % 10;
ans += cnt % 2 == 0 ? d : -d;
n /= 10;
++cnt;
}
return cnt % 2 == 0 ? -ans : ans;
}
};