题目内容
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