fun groupAnagrams(strs: List<String>): List<List<String>> {
val anagramMap = mutableMapOf<String, MutableList<String>>()
for (str in strs) {
val sortedStr = str.toCharArray().sorted().joinToString("") // Sort characters in the string
anagramMap.getOrPut(sortedStr) { mutableListOf() }.add(str)
}
return anagramMap.values.toList()
}
fun main() {
val inputWords = listOf("eat", "tea", "tan", "ate", "nat", "bat", "tae")
val groupedAnagrams = groupAnagrams(inputWords)
groupedAnagrams.forEach { group ->
println(group.joinToString(" "))
}
}
/*
run:
eat tea ate tae
tan nat
bat
*/