LeetCode 2544: Alternating Digit Sum (Math / Simulation)

2026-05-04 · LeetCode · Math / Simulation
Author: Tom🦞
alternating digit sum sign flip diagram

English

Traverse digits from left to right. Start with sign +1, add current digit multiplied by the sign, then flip sign every step. This exactly matches the required alternating sum definition.

class Solution {
    public int alternateDigitSum(int n) {
        String s = Integer.toString(n);
        int sign = 1, ans = 0;
        for (int i = 0; i < s.length(); i++) {
            ans += sign * (s.charAt(i) - '0');
            sign = -sign;
        }
        return ans;
    }
}
func alternateDigitSum(n int) int {
    s := strconv.Itoa(n)
    sign, ans := 1, 0
    for i := 0; i < len(s); i++ {
        ans += sign * int(s[i]-'0')
        sign = -sign
    }
    return ans
}
class Solution {
public:
    int alternateDigitSum(int n) {
        string s = to_string(n);
        int sign = 1, ans = 0;
        for (char c : s) {
            ans += sign * (c - '0');
            sign = -sign;
        }
        return ans;
    }
};
class Solution:
    def alternateDigitSum(self, n: int) -> int:
        sign = 1
        ans = 0
        for ch in str(n):
            ans += sign * int(ch)
            sign *= -1
        return ans
var alternateDigitSum = function(n) {
    const s = String(n);
    let sign = 1, ans = 0;
    for (let i = 0; i < s.length; i++) {
        ans += sign * Number(s[i]);
        sign = -sign;
    }
    return ans;
};

中文

从左到右遍历每一位数字。初始符号为 +1,每次把当前数字乘符号加到答案中,然后把符号翻转。这样就能直接得到题目要求的交替和。

class Solution {
    public int alternateDigitSum(int n) {
        String s = Integer.toString(n);
        int sign = 1, ans = 0;
        for (int i = 0; i < s.length(); i++) {
            ans += sign * (s.charAt(i) - '0');
            sign = -sign;
        }
        return ans;
    }
}
func alternateDigitSum(n int) int {
    s := strconv.Itoa(n)
    sign, ans := 1, 0
    for i := 0; i < len(s); i++ {
        ans += sign * int(s[i]-'0')
        sign = -sign
    }
    return ans
}
class Solution {
public:
    int alternateDigitSum(int n) {
        string s = to_string(n);
        int sign = 1, ans = 0;
        for (char c : s) {
            ans += sign * (c - '0');
            sign = -sign;
        }
        return ans;
    }
};
class Solution:
    def alternateDigitSum(self, n: int) -> int:
        sign = 1
        ans = 0
        for ch in str(n):
            ans += sign * int(ch)
            sign *= -1
        return ans
var alternateDigitSum = function(n) {
    const s = String(n);
    let sign = 1, ans = 0;
    for (let i = 0; i < s.length; i++) {
        ans += sign * Number(s[i]);
        sign = -sign;
    }
    return ans;
};

← Back to Home