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