Write a java program for a given long integer, the task is to find if the difference between sum of odd digits and sum of even digits is 0 or not. The indexes start from zero (0 index is for leftmost digit).
Examples:
Input : 1212112
Output : Yes
Explanation:
the odd position element is 2+2+1=5
the even position element is 1+1+1+2=5
the difference is 5-5=0 equal to zero.
So print yes.Input :12345
Output : No
Explanation:
the odd position element is 1+3+5=9
the even position element is 2+4=6
the difference is 9-6=3 not equal to zero.
So print no.
Approach:
One by one traverse digits and find the two sums. If difference between two sums is 0, print yes, else no.
Below is the implementation of the above approach:
// Java equivalent of above code public class Main {
// Function to check if the difference between the sum
// of alternating digits in 'n' is 0
public static boolean isDiff0( int n)
{
// Variable to store the sum of alternating digits
int first = 0 ;
// Variable to store the sum of the other
// alternating digits
int second = 0 ;
// A flag to alternate between 'first' and 'second'
// sums
boolean flag = true ;
// Extract the last digit from 'n'
while (n > 0 ) {
int digit = n % 10 ;
// Add 'digit' to 'first' if 'flag' is true
if (flag) {
first += digit;
}
// Add 'digit' to 'second' if 'flag' is false
else {
second += digit;
}
// Toggle the flag for the next digit
flag = !flag;
// Remove the last digit from 'n'
n = n / 10 ;
}
if (first - second == 0 ) {
// Return true if the difference between 'first'
// and 'second'sums is 0
return true ;
}
// Otherwise, return false
return false ;
}
public static void main(String[] args)
{
// The input number
int n = 1243 ;
// If isDiff0 returns true, print "Yes"
if (isDiff0(n)) {
System.out.println( "Yes" );
}
// If isDiff0 returns false, print "No"
else {
System.out.println( "No" );
}
}
} |
Yes
Time Complexity:O(log n)
Auxiliary space: O(1)
Please refer complete article on Difference between sums of odd and even digits for more details!