leetcode刷题笔记四十九 字母异位词分组
源地址:49. 字母异位词分组
问题描述:
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
示例:
输入: ["eat", "tea", "tan", "ate", "nat", "bat"]
输出:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]
说明:所有输入均为小写字母。
不考虑答案输出的顺序。
代码补充:
//异位词特点为构成词的字符一致,位置不同
//通过对字符串使用sorted,编译器建议使用toSeq.sorted.unwrap方法
//构建(sortedStr, List[String])
//由此,通过使用k-v键值对, 将异位词进行分类,放入相关的列表中
//再将所有的列表拼接返回皆可
import scala.collection.mutable
object Solution {
def groupAnagrams(strs: Array[String]): List[List[String]] = {
if (strs.length == 0) return List()
val strMap = mutable.Map.empty[String, mutable.ListBuffer[String]]
val ans = mutable.ListBuffer[List[String]]()
for(elem <- strs){
val sortedStrs = elem.toSeq.sorted.unwrap
if(!strMap.contains(sortedStrs)) strMap.put(sortedStrs, mutable.ListBuffer())
strMap(sortedStrs) += elem
}
for(elem <- strMap.values) ans += elem.toList
return ans.toList
}
}