題目內容
Given an array of strings, group anagrams together.
樣例輸入輸出
Input: ["eat", "tea", "tan", "ate", "nat", "bat"],
Output:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]
題解
題目內容很好理解坠非,就是把有相同字母的但是順序不一樣的(即當你把它字母重排序后 兩個單詞是一模一樣) 單詞分在一個組 按照這個理解代碼就很好實現了
代碼
fun groupAnagrams(strs: Array<String>): List<List<String>> {
var result: MutableList<MutableList<String>> = mutableListOf(mutableListOf())
result.clear()
strs.sortByDescending { String(it.toCharArray().sortedArray()) }
var ss = "-1"
var i = 0
strs.forEach {
if (ss == String(it.toCharArray().sortedArray())) {
result[i].add(it)
} else {
ss = String(it.toCharArray().sortedArray())
if (result.size != 0)
i++
result.add(mutableListOf(it))
}
}
// println("111")
// result.forEach { result2.add(it) }
// result.forEach {
// println(it.toString())
// }
return result
}
結果
image.png