LeetCode in Kotlin

49. Group Anagrams

Medium

Given an array of strings strs, group the anagrams together. You can return the answer in any order.

An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once.

Example 1:

Input: strs = [“eat”,”tea”,”tan”,”ate”,”nat”,”bat”]

Output: [[“bat”],[“nat”,”tan”],[“ate”,”eat”,”tea”]]

Example 2:

Input: strs = [””]

Output: [[””]]

Example 3:

Input: strs = [“a”]

Output: [[“a”]]

Constraints:

Solution

class Solution {
    fun groupAnagrams(strs: Array<String>): List<List<String>> {
        val hm: MutableMap<String, MutableList<String>> = HashMap()
        for (s in strs) {
            val ch = s.toCharArray()
            ch.sort()
            val temp = String(ch)
            hm.computeIfAbsent(
                temp
            ) { _: String? -> ArrayList() }
            hm.getValue(temp).add(s)
        }
        return ArrayList<List<String>>(hm.values)
    }
}