使用Scala集合方法帮助将[0,0,0,1,1,1,1,0,0,1,1]列表转换为[3,4,2,2]

 美甲控Alily 发布于 2023-02-13 19:59
  • php
  • 所以我有一个0和1的列表,我想找到每个元素的计数并将其输出到列表中.我可以想到用函数执行它的递归方法,但有没有任何帮助函数可以帮助转换它?

    我相信groupBy可能很有用,但它似乎将所有元素组合成一个或另一个分区,而不是我想要的方式.

    我希望有一个数字计数列表,直到每次从0到1和1到0的转换.即,如果我们有0,0,0,..确定我们计算3个零,所以记住3,然后我们有1, 1,1,1所以我们算了4个1,所以我们记得4个,到目前为止我们有一个[3,4 ...]列表等等

    1 个回答
    • Yann Moisan解决方案的尾部版本:

          def pack[A](ls: Seq[A], prev: Seq[Int] = Seq.empty): Seq[Int] = {
              if (ls.isEmpty) prev
              else {
                  val (packed, next) = ls span {_ == ls.head }
                  pack(next, prev :+ packed.size)
              }
          }
      

      2023-02-13 20:04 回答
    撰写答案
    今天,你开发时遇到什么问题呢?
    立即提问
    热门标签
    PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有