Problem: Write a program to check if a given number is jumbled number.
What is a jumbled number?
A jumbled number is a number in which for every digit, it’s neighbor digit (left or right) differs by max 1.
For example:
Number | Is jumbled number? |
---|---|
1234 | true |
8987 | true |
2689 | false |
13 | false |
Algorithm:
To find a jumbled number we have to compare every digit of the number with the neighboring digits. So we have to get 2 neighboring digits of the number at a time and check if the difference is > 1. Let us see the algorithm.
Say, n is the given number. while n % 10 != 0 (Until all the digits of n are checked) digit1 = n % 10 // first digit in reverse order digit2 = (n/10) % 10 // (n/10) gives previous digit if absolute difference between digit1 and digit2 is greater than 1 return false // Not a jumbled number end if end while // Difference between neighboring digits is less than 1 for all the digits // of n. So return true
If there are n digits in a given number then above algorithm will have maximum n iterations. So worst-case complexity of above algorithm would be O(n).
Java program:
We will write a Java program for above algorithm.
public class JumbledNumberChecker { private static boolean isJumbledNumber(int number) { while(number % 10 != 0){ int digit1 = number % 10; int digit2 = (number/10) % 10; if(Math.abs(digit2-digit1) > 1 && digit2 != 0) return false; number /= 10; } return true; } public static void main(String[] args) { int n1 = -1234; int n2 = 287; System.out.println("Is " + n1 + " jumbled number? : " + isJumbledNumber(n1)); System.out.println("Is " + n2 + " jumbled number? : " + isJumbledNumber(n4)); } }
Output:
Is -1234 jumbled number? : true Is 287 jumbled number? : false
I hope you liked the solution.
Please comment for your doubts and questions.
Your comments are most welcome.