How to check if every digit in a number appears only once in VB.NET

1 Answer

0 votes
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
'

 



answered Feb 26 by avibootz
...