How to group Anagrams from an array of strings in VB.NET

1 Answer

0 votes
Imports System
Imports System.Collections.Generic
Imports System.Linq

Class GroupAnagrams
    Public Shared Function GroupAnagramsMethod(ByVal strs As String()) As List(Of List(Of String))
        Dim anagramMap = New Dictionary(Of String, List(Of String))()

        For Each str As String In strs
            Dim charArray As Char() = str.ToCharArray()
            Array.Sort(charArray)
            Dim sortedStr As String = New String(charArray)

            If Not anagramMap.ContainsKey(sortedStr) Then
                anagramMap(sortedStr) = New List(Of String)()
            End If

            anagramMap(sortedStr).Add(str)
        Next

        Return anagramMap.Values.ToList()
    End Function

    Public Shared Sub Main()
        Dim input As String() = {"eat", "tea", "tan", "ate", "nat", "bat", "tae"}
        Dim groupedAnagrams As List(Of List(Of String)) = GroupAnagramsMethod(input)

        For Each group As List(Of String) In groupedAnagrams
            Console.WriteLine(String.Join(", ", group))
        Next
    End Sub
End Class

 
 
' run:
'
' eat, tea, ate, tae
' tan, nat
' bat
'

 



answered Jun 9, 2025 by avibootz
...