Imports System
Module UniqueDigits
' n Mod 10 extracts the last digit.
' 1 << digit creates a bitmask for that digit.
' (mask And bit) checks whether the bit for this digit is already set.
' Mark the digit as seen: mask = mask Or bit. This sets the bit for the current digit.
Function AllDigitsUnique(n As Integer) As Boolean
Dim mask As Integer = 0
While n > 0
Dim digit As Integer = n Mod 10
Dim bit As Integer = 1 << digit
If (mask And bit) <> 0 Then
Return False ' digit already seen
End If
mask = mask Or bit ' mark the digit as seen
n \= 10 ' integer division
End While
Return True
End Function
Sub Main()
Dim n As Integer = 123456
Console.WriteLine(If(AllDigitsUnique(n), "Unique", "Not unique"))
n = 123452
Console.WriteLine(If(AllDigitsUnique(n), "Unique", "Not unique"))
End Sub
End Module
' run:
'
' Unique
' Not unique
'