leetcode刷题笔记四十九 字母异位词分组

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
    }
}
原文地址:https://www.cnblogs.com/ganshuoos/p/13256392.html