From b4839c2c07e2d4fe4e62d96aac718f2d3210b8d6 Mon Sep 17 00:00:00 2001 From: shellhub Date: Sun, 16 Aug 2020 23:04:34 +0800 Subject: [PATCH 1/2] Added SumOfDigits --- Maths/SumOfDigits.java | 62 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 Maths/SumOfDigits.java diff --git a/Maths/SumOfDigits.java b/Maths/SumOfDigits.java new file mode 100644 index 000000000..baa798a39 --- /dev/null +++ b/Maths/SumOfDigits.java @@ -0,0 +1,62 @@ +package Maths; + +public class SumOfDigits { + public static void main(String[] args) { + assert + sumOfDigits(-123) == 6 + && sumOfDigitsRecursion(-123) == 6 + && sumOfDigitsFast(-123) == 6; + + assert sumOfDigits(0) == 0 + && sumOfDigitsRecursion(0) == 0 + && sumOfDigitsFast(0) == 0; + + + assert sumOfDigits(12345) == 15 + && sumOfDigitsRecursion(12345) == 15 + && sumOfDigitsFast(12345) == 15; + } + + /** + * Calculate the sum of digits of a number + * + * @param number the number contains digits + * @return sum of digits of given {@code number} + */ + public static int sumOfDigits(int number) { + number = number < 0 ? -number : number; /* calculate abs value */ + int sum = 0; + while (number != 0) { + sum += number % 10; + number /= 10; + } + return sum; + } + + /** + * Calculate the sum of digits of a number using recursion + * + * @param number the number contains digits + * @return sum of digits of given {@code number} + */ + public static int sumOfDigitsRecursion(int number) { + number = number < 0 ? -number : number; /* calculate abs value */ + return number < 10 ? number : number % 10 + sumOfDigitsRecursion(number / 10); + } + + /** + * Calculate the sum of digits of a number using char array + * + * @param number the number contains digits + * @return sum of digits of given {@code number} + */ + public static int sumOfDigitsFast(int number) { + number = number < 0 ? -number : number; /* calculate abs value */ + char[] digits = (number + "").toCharArray(); + int sum = 0; + for (int i = 0; i < digits.length; ++i) { + sum += digits[i] - '0'; + } + return sum; + } +} From f9ae0888e61d695c954ad0247fc2950896fb0fd8 Mon Sep 17 00:00:00 2001 From: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Date: Sun, 16 Aug 2020 15:05:08 +0000 Subject: [PATCH 2/2] updating DIRECTORY.md --- DIRECTORY.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/DIRECTORY.md b/DIRECTORY.md index dc067c808..f5f917efa 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -143,13 +143,14 @@ * [PowRecursion](https://github.com/TheAlgorithms/Java/blob/master/Maths/PowRecursion.java) * [PrimeCheck](https://github.com/TheAlgorithms/Java/blob/master/Maths/PrimeCheck.java) * [PrimeFactorization](https://github.com/TheAlgorithms/Java/blob/master/Maths/PrimeFactorization.java) + * [SumOfDigits](https://github.com/TheAlgorithms/Java/blob/master/Maths/SumOfDigits.java) * [VampireNumber](https://github.com/TheAlgorithms/Java/blob/master/Maths/VampireNumber.java) ## MinimizingLateness * [MinimizingLateness](https://github.com/TheAlgorithms/Java/blob/master/MinimizingLateness/MinimizingLateness.java) ## Misc - * [heap sort](https://github.com/TheAlgorithms/Java/blob/master/Misc/heap_sort.java) + * [HeapSort](https://github.com/TheAlgorithms/Java/blob/master/Misc/HeapSort.java) * [MedianOfRunningArray](https://github.com/TheAlgorithms/Java/blob/master/Misc/MedianOfRunningArray.java) * [PalindromePrime](https://github.com/TheAlgorithms/Java/blob/master/Misc/PalindromePrime.java)