diff --git a/README.md b/README.md index a5b5ed6..1ff7f08 100644 --- a/README.md +++ b/README.md @@ -122,6 +122,7 @@ other languages. - Sort by Increasing Frequency (https://leetcode.com/problems/sort-array-by-increasing-frequency) - Maximum Odd Binary Number (https://leetcode.com/problems/maximum-odd-binary-number) - Maximum Count of Positive or Negative Integer (https://leetcode.com/problems/maximum-count-of-positive-integer-and-negative-integer) +- Alternating Digit Sum (https://leetcode.com/problems/alternating-digit-sum/) #### Medium diff --git a/src/leetcode/alternating_digit_sum.rs b/src/leetcode/alternating_digit_sum.rs new file mode 100644 index 0000000..18f69aa --- /dev/null +++ b/src/leetcode/alternating_digit_sum.rs @@ -0,0 +1,24 @@ +pub fn alternate_digit_sum(mut number: i32) -> i32 { + let mut result = 0; + let mut sign = 1; + while number > 0 { + sign *= -1; + result += (number % 10) * sign; + number /= 10; + } + result * sign +} + +#[cfg(test)] +mod tests { + use super::alternate_digit_sum; + + #[test] + fn digits_are_summed_with_alternating_signs() { + let sum = alternate_digit_sum(12345); + assert_eq!(3, sum); + + let sum = alternate_digit_sum(10); + assert_eq!(1, sum) + } +} diff --git a/src/leetcode/mod.rs b/src/leetcode/mod.rs index 252647d..90f7681 100644 --- a/src/leetcode/mod.rs +++ b/src/leetcode/mod.rs @@ -52,3 +52,4 @@ mod sort_jumbled_numbers; mod max_binary_number; mod custom_sort; mod max_positive_negative; +mod alternating_digit_sum;