scala计算字符出现频率

现在用了可变dict,觉得写的不好

  def times(chars: List[Char]): List[(Char, Int)] = {
      import scala.collection.mutable.Map
      var res: Map[Char, Int] = Map()
      for(char:Char <- chars) {if(res.contains(char)) res.update(char, res(char)+1) else res += (char -> 1)}
      res.toList
    }

请问应该怎么改进

阅读 3.2k
1 个回答
def times(chars: List[Char]): List[(Char, Int)] = chars.groupBy(x=>x).map(y=>(y._1,y._2.length)).toList

看你的意思是判断字符串中的字符出现次数,所以还可以优化为:

def times(s: String): List[(Char, Int)] = s.groupBy(x => x).map(y => (y._1, y._2.length)).toList
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进