Problem: Given a range, print all numbers having unique digits.
For example:
For example:
Input : 10 20 Output : 10 12 13 14 15 16 17 18 19 20 11 does not has both digits unique. Input : 1 10 Output : 1 2 3 4 5 6 7 8 9 10Method 1: A simple approach one can come along is looping from 1 to N and checking each digits if it meets the required constraints i.e:
- Find the digits one by one and keep marking visited digits.
- If all digits occurs one time only then print that number.
- Else ignore it
class InterviewDesk { /* method to print numbers with unique digits */ static void printUnique(int n) { /* traversing all numbers */ for (int i = 1; i <= n; i++) { int num = i; boolean visited[] = new boolean[10]; /* find digit and maintain its count */ while(num > 0) { /* if a digit occcurs more than 1 time, break */ if (visited[num % 10]) break; /* mark digit as visited */ visited[num%10] = true; num = num/10; } /* print if number has unique digits */ if (num == 0) System.out.print(i + " "); } } /* driver method */ public static void main(String args[]) { int n = 20; printUnique(n); } }Output:
1 2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20